Top Type 通用父类型(任何类型都可以赋值给这个类型)
any
let value: any
value = true
value = 42
value = 'hello word'
value = []
value = {}
....
unknown
let value: unknown
value = true
value = 42
value = 'hello word'
value = []
value = {}
....
区别
any
我不在乎它的类型
你可以把任何值赋值给any类型的变量,并对该变量进行任何操作
unknown
我不知道它的类型,相当于安全的 any 类型,相比 any,ts 会对 unknown 类型进行检查
你可以把任何值赋给 unknwon 类型的变量,但你必须进行类型检查或类型断言才能对变量进行操作
function a(callback: unknown) {
try {
// 报错对象的类型为 unknown
callback()
} catch(err) {}
}
a(1)
// 解决方法对 callback 进行类型收紧
if (typeof callback === 'function') {
callback()
}
unknown 类型赋值的变量只能赋值给 any 类型和 unknown 类型本身
let value: unknown
let value1: unknown = value // 正确
let value2: any = value // 正确
let value3: boolean = value // 错误
let value4: number = value // 错误
...
网友评论