前端系列三十二:TS字面量类型跟Any类型

  • Post author:
  • Post category:其他


字面量类型:


使用模式: ‘ 字面量类型配合联合类型一起使用 ‘

使用场景: 用来’ 表示一组明确的可选值列表 ‘

写法:

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只能用来查询变量或属性的类型,无法查询其他形式的类型



版权声明:本文为WebYanXin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。