字面量类型:
使用模式: ‘ 字面量类型配合联合类型一起使用 ‘
使用场景: 用来’ 表示一组明确的可选值列表 ‘
写法:
function changeDirection( direction: ‘up’ | ‘down’ | ‘ left ‘ | ‘ right ‘) {
consloe.log( direction )
}
解释: 参数direction 的值只能是 up/down/left/right 中的任意一个
优势: 相比于string 类型, 使用字面量类型更加精确、严谨
any类型:
原则上不推荐使用any
写法:
let obj: any = { x: 0 }
obj.bar = 100
以上操作都不会有任何类型错误提示,即使存在错误
尽可能避免使用 any 类型, 非常 ‘ l临时使用any ‘ 来 ‘避免’ 书写很长、很复杂的类型
其他隐式具有any类型的情况:
1.声明变量不提供类型也不提供默认值
2.函数参数不加类型
注意:
因为不推荐使用any,所以,这两种情况下都应该提供类型
typeof:
TS也提供了typeof操作符::
可以在’类型上下文’ 中引用变量或属性的类型
使用场景:
根据已有变量的值,获取该值的类型,来简化类型书写
let p = { x:1, y:2 }
function formatPoint ( point: { x: number; y:number } ) { }
formatPoint( p )
function formatPoint ( point: typeof p ) { }
解释:
1.使用’typeof’ 操作符来获取变量p 的类型,结果与第一种( 对象字面量形式的类型 ) 相同
2. typeof 出现在 ‘类型注解的位置’ ( 参数名称的冒号后面 ) ‘所处的环境就在类型上下文’ ( 区别于JS代码 )
3.注意:typeof只能用来查询变量或属性的类型,无法查询其他形式的类型