-
any类型:-
any是 TypeScript 中的顶级类型(Top Type),表示可以是任意类型。 -
当你将一个值声明为
any类型时,TypeScript 的类型检查器会完全跳过对它的检查,允许你对它执行任何操作。 -
示例:
typescript复制代码
let value: any; value = 42; // OK value = 'Hello'; // OK value = true; // OK
-
-
unknown类型:-
unknown是 TypeScript 3.0 引入的一种安全的顶级类型,表示可以是任意类型,但不允许在不知道具体类型的情况下直接对它执行操作。 -
在使用
unknown类型的值之前,必须进行类型检查或类型断言。 -
示例:
typescript复制代码
let value: unknown; value = 42; // OK value = 'Hello'; // OK value = true; // OK // 错误:不能直接对 unknown 类型的值执行操作 // console.log(value.toUpperCase()); // Error // 正确:类型检查后可以执行操作 if (typeof value === 'string') { console.log(value.toUpperCase()); // OK }
-
-
区别:
any类型允许对值执行任何操作,而unknown类型要求在使用之前进行类型检查。unknown类型更安全,因为它可以防止潜在的运行时错误。- 如果你不确定一个值的类型,但又不想放弃类型检查,应该使用
unknown类型。