我们可以对 any 进行任何操作,不需要检查类型。
let value:any;
value = ture;
value = 1;
value.length;
没有类型检查就没有意义了,跟写JS一样。很不安全。
unknown
也可以把任何值赋值给 unknown
let value:any;
value = ture;
value = 1;
但是不能调用属性和方法
value.length; // 错误写法
如果需要调用属性和方法,那么你可能需要类型断言
let value:unknown;
value = 'hello';
(value as string).length
再或者使用类型保护
let value:unknown;
value = 'hello';
if (typeof value === 'string') {
value.length
}
联合类型中的 unknown定义
如果联合类型中有unknown,那么最终得到的都是unknown类型
type U1 = unknown | null;
type U2 = unknown | string;
type U3 = unknown | number;
类型别名 U1,U2,U3 都是 unknown 类型