1 . 元组类型
元组(Tuple) , 是一种特殊的数组类型 , 确定元素个数的数组 ,类型定义时定义几个元素 , 用的时候就有几个元素 。
2 . 1 字面量常量
如上图 : str1 的类型为 string 字符串
而 str2 的类型就为 ‘ Hello TS’ 字面量类型
也就是说 字符串 ,对象 ,数字等任何字面量都可以成为一个类型来用!!!
2 . 2 字面量常量使用场景
使用模式 :可以跟联合类型一起使用
使用场景 :用来表示一组确定的可选值列表 , 比如 游戏中的走位只能是 上up ,down ,left ,right。
3 . 枚举
枚举 : 定义一组命名常量 。它描述一个值 ,该值可以是这组命名常量中的任何一个。用关键字 enum声明。
枚举的功能类似于字面量常量类型 + 联合类型组合的功能 ,也可以表示一组明确的可选值 。
注意:
(1)约定 枚举名称 及 枚举中的值以大写字母开头 。
(2)枚举间的多个值之间用 逗号 (,)隔开。
调用函数是 ,参数要用Direction . Up , changeDirection(Direction.Up) 。
3 . 1 数字枚举(有自增长行为)
枚举里面的值如果没有初始化 。默认从 0 开始依次递增!!!
也可以自己指定值 :
3 . 2 字符串枚举
字符串无自增长行为 ,因此 ,字符串枚举的每个成员都有初始值。
3 . 3 枚举实现原理
枚举跟其他类型不一样 ,它是有值的 ,所以 ,其它类型会在编译为 JS 代码时自动移除 ,但是 枚举会被编译成 JS 代码(成为一个对象)!!!
字面量常量 + 联合类型 和 枚举 都可以表示一组确定的可选值列表 ,但一般采用字面量常量 + 联合类型 ,因为它更直观 、简洁 、高效 。
4 . any 类型
原则上 , 不推荐使用 any ,这会让 TypeScript 变为 ' AnyScript ' , 会失去 TS 类型保护的优势 。除非临时使用 any来 “ 避免 ”书写很长 、很复杂的类型 !!!
注意 : 以上操作不会有任何类型的错误提示 ,即使存在错误 。如 let obj : any = { x : 0 } ;
- 访问不存在的属性 或者 给它赋值 。obj . aaa = 10 ;
- 当作函数调用 。 obj ( ) ;
- 赋值给其他类型的变量 。 let n : number = obj ;
其他隐式具有 any 类型的情况 :
- 声明变量但不提供类型也不赋值
- 函数参数不加类型
因为不推荐使用 any ,所以这两种情况下都应该提供类型!!!