1.函数
this,重载,推断类型,可选参数(?号标识),默认参数(=)
1 function buildName(firstName: string, lastName?: string) { 2 if (lastName) 3 return firstName + " " + lastName; 4 else 5 return firstName; 6 } 7 8 let result1 = buildName("Bob"); // works correctly now 9 let result2 = buildName("Bob", "Adams", "Sr."); // error, too many parameters 10 let result3 = buildName("Bob", "Adams"); // ah, just right
2.泛型<>
泛型变量,泛型类型,泛型类,泛型约束
1 function identity<T>(arg: T): T { 2 return arg; 3 }
相当于
1 function identity(arg: any): any { 2 return arg; 3 }
3.枚举enum
数字枚举,字符串枚举,异构(混合)枚举,反向映射(TODO),const枚举,外部枚举(declare)
4.类型推论
最佳通用类型,上下文类型
5.类型兼容性
函数、类、泛型、枚举 比较赋值,子类型与赋值
6.高级类型
交叉类型(TODO),联合类型(TODO),类型保护与区分类型(typeof,instanceof),可以为null的类型,类型别名,数字、字符串 字面量类型,枚举成员类型,可辨识联合,完整性检查,多态的this类型,索引类型,映射类型
7.Symbols
8.迭代器、生成器
9.模块
导入导出(export(default),import(和require))
10.命名空间(内部模块)
namespace,别名,命名空间和模块
11.模块解析
12.声明合并
合并接口,合并命名空间,模块扩展
13.JSX
14.装饰器(@)
方法、类、访问器、属性、参数 装饰器,元数据
15.Mixins
16.///指令
17.JavaScript文件类型检查