TypeScript具备类型系统,且是JavaScript的超集。它能够编译成普通的JavaScript代码。 TypeScript支持任意浏览器,任意环境,任意系统而且是开源的。Ts主要用于解决那些问题:html
node install –g typescriptnode
"compilerOptions":git
"exclude":不包含的编译目录typescript
快捷键 ctrl+shift+p 调出命令窗口,选择 Configure Task Runner 建立如图所示json
参数 "args" 指代编译的范围数组
最经常使用的关键字,用来声明对象,例如浏览器
var关键存在一些弊端,例如:模块化
为了解决 var 关键字的以上弊端,提出了 let关键字,基本用法和var关键字同样,以下:函数
定义的变量不能够修改ui
简单的true/false值
浮点型的数字
在类型后面直接使用[]
使用Array泛型
enum 类型是对js类型的一个补充,使用枚举类型能够为一组数值选择一个友好的名称
完整函数类型包含两部分:参数类型和返回值类型
上诉写法过于复杂,ts提供类型推断,能够简化写法,以下所示
默认参数能够指定参数默认值,函数调用时能够不用传递默认参数
可选参数在参数后用 ? 来表示,可选参数只能在必须参数后
剩余参数表示不知道传递多个类型相同的参数可使用,剩余参数只能用类型数组来表示,并在参数前加上省略号,剩余参数只能是最后一个参数
看以下所示的代码,调用out函数的this 对象被指定为全局变量致使调用失败
在ts中,函数表达式变为使用lambda表达式( () => {} ),这样就会在函数建立的时候就指定'this'值
编译后的结果以下所示
ts中类的基本结构如图所示,在ts里,每一个成员默认为public的,也存在 private 及 protected,private只能在自身类可用,protected可在继承类中使用
抽象类使用abstract关键字来定义抽象类和在抽象类内部定义抽象方法,抽象类只能用派生类实例化,抽象方法必须在派生类中实现
面向对象最基本的模式就是对类型进行继承扩展,如图所示,Dog继承了抽象类animal,实现了抽象方法say,并重写了父类中的move方法
类的静态成员,这些属性存在于类自己上面而不是类的实例上
与C#或Java里接口的基本做用同样,ts也可以用它来明确的强制一个类去符合某种契约。以下所示,Squre类实现Shape接口。
接口能够继承多个接口,使用extends关键字来继承多个接口,以下所示
ts像C#和Java,可使用泛型来建立可重用的组件,一个组件能够支持多种类型的数据,ts中使用(<>)括起泛型类型
为了开发大型的代码程序,模块化是必须经历的一个过程。ts组织代码的方式主要包括内部使用的命名空间和外部使用的模块。
当代码变得复杂的时候,要一种手段来组织代码,以便于在记录它们类型的同时还不用担忧与其它对象产生命名冲突,这时候咱们使用命名空间。命名空间内的代码只在命名空间内才是可见的,对外部不可见。
模块在其自身的做用域里执行,在一个模块里的变量,函数,类等等在模块外部是不可见的,除非你明确地使用export形式之一导出它们。相反,若是想使用其它模块导出的变量,函数,类,接口等的时候,你必需要导入它们,可使用import形式之一。
模块是自声明的;两个模块之间的关系是经过在文件级别上使用imports和exports创建的。
任何声明(好比变量,函数,类,类型别名或接口)都可以经过添加export关键字来导出,
可使用如下import形式之一来导入其它模块中的导出内容。
CommonJS和AMD都有一个exports对象的概念,它包含了一个模块的全部导出内容。ts模块支持export =语法,以配合传统的CommonJS和AMD的工做流。
export =语法定义一个模块的导出对象。它能够是类,接口,命名空间,函数或枚举。
若要导入一个使用了export =的模块时,必须使用TypeScript提供的特定语法import let = require("module")。