any VS unknow
二者都是顶级类型(top type),任何类型的值都可以赋值给顶级类型变量:
let a: any = 123// 不报错
let b: unknown = 123// 不报错
但是 unknown 比 any 的类型检查更严格,any 什么检查都不做,unknown 要求先收 窄类型
let a: any = 'aaa'
let b: unknown = 'bbb'// 不报错
let c: string = a// 不报错
let d: string = b// 报错❌ :Type 'unknown' is not assignable to type 'string'.
never 不应该出现的类型
type A = 1 | 2
function h(v: A) {
switch(v) {
case 1:
break;
case 2:
break;
default:
const res = v // res 的类型就是 never
}
}