any的使用场景
一旦设置为any,类型检查系统会认为这个值不需要检查,一般用于
1.出于特殊原因,需要关闭某些值的类型检查
2.为了适配老旧的js项目,快速迁移到ts,可以把代码设置为any,因为对于老旧js项目很难做到给每个值都加上类型定义
any带来的问题
js
let a:any = 'string'
let b:number = a //可以赋值不会报错
b.toFixed() // 报错
由于any类型可以赋值给任何类型,所以会污染其他变量,像以上案例,运行时才会爆出错误
unknown
和any类型类似,如果设置为unknown,可以赋值任何值,和any区别:
1.unknown类型的变量,只能赋值给any和unknown类型的变量,赋值给其他类型报错
js
let a:unknown = 'string'
let b:number = a //报错
let c:any = a // 不报错
2.unknown类型的变量不能直接使用变量上的方法和属性
js
let a:unknown = 'string'
a.trim() // 报错
//如果想不报错,可以这么写
if(typeof a === 'string') {
a.trim() // 不会报错
}