仅供学习使用,原文链接:学习TypeScrip2(任意类型)_小满zs的博客-CSDN博客
Any 类型和 unknown 顶级类型
nodejs 环境执行ts
npm i @types/node --save-dev (node环境支持的依赖必装)
npm i ts-node --g
1.没有强制限定哪种类型,随时切换类型都可以,我们可以对 any 进行任何操作,不需要检查类型
let anys: any = 123
anys = '123'
anys = true
2.声明变量的时候没有指定任意类型默认为any
let anys;
anys = '123'
anys = true
3.弊端:如果使用any 就失去了TS类型检测的作用
4.typescript 3.0中引入的unknown类型也被认为是 top type, 但它更安全。与any一样,所有类型都可以分配给unknown。
unknown类型比any更加严格,当你要使用any的时候可以尝试使用unknown。
//unknown 可以定义任何类型的量
let value : unknown;
value = true;
value = '123'
value = 123
value = []
value = {}
value = null
value = undefined
value = Symbol('type')
//这样会报错, unknown类型不能作为子类型,只能作为父类型, any类型可以作为父类型和子类型
//unknown类型不能赋值给其他类型
let names: unknown = '123'
let names2: string = names
//any 类型可以赋值给其他类型
let names: any = '123'
let names2: string = names
//unknown 可赋值的对象只有unknown 和 any
let bbb: unknown = '123'
let aaa: any = '456'
aaa = bbb
区别2
//如果是any 类型在对象没有这个属性的时候,还在获取,是不会报错的
let obj: any = {b :1}
obj.a
//如果是unknown 是不能调用属性和方法
let obj: unknown = {b: 1, ccc(): number=> 123}
obj.b
obj.c()