任意值
不希望某个特定值导致类型检查错误,也就是编译器关闭类型检查,所有类型都可以赋值给它,它也可以被赋值给其他任何类型
let power: anypower = 'olu'power = 123
let num: number = 233power = numnum = powerunknown 比 any 更加安全
let olu1: any = { a: 1, b: (): number => 123 }let olu2: unknown = { a: 1, b: (): number => 123 }
olu1.aolu1.b()olu2.a // 报错 对象的类型为 "unknown"olu2.b() // 报错 对象的类型为 "unknown"- any 类型可以分配给其他类型(可以作为父类型和子类型)
- unknown 不可以分配给其他类型(只能作为父类型,不能作为子类型)
下面这段代码,使用 any 就让 olu 变不可爱了,但是使用 unknown olu 也不会加班
unknown 可赋值对象只有 unknown 和 any
let str1: string = 'olu超级无敌可爱'let str2: any = 'olu不可爱'let str3: unknown = 'olu今天要加班'let str4: unknown = 'olu吃欺骗餐长肉肉'
str1 = str2str1 = str3 // 报错 不能将类型“unknown”分配给类型“string”str2 = str3str3 = str4