文章目录
any
any
是代表所有可能的JavaScript值,对象、数组、函数、Error,以及任何你可能定义的值。
TypeScript中任何类型都可以归为any
类型,折让any
成为了类型系统的顶级类型,例如:
let value: any;
value = true; // OK
value = 42; // OK
value = "Hello World"; // OK
value = []; // OK
value = {}; // OK
value = Math.random; // OK
value = null; // OK
value = undefined; // OK
value = new TypeError(); // OK
value = Symbol("type"); // OK
本质上any
是类型系统的逃逸仓,TypeScript允许我们对any
类型的值执行任何操作,而无需执行任何形式的检查,这也就导致了我们很容易编写类型正确但是执行异常的代码,也就是说,使用了any
就无法享受TypeScript大量的保护机制
所以TypeScript在3.0版本时推出了unknow
类型
unknow
就像所有类型都可以归为any
一样,所有类型都可以归为unknow
,这使得unknow
成为了除了any
之外,TypeScript类型系统的另一种顶级类型
let value: unknown;
value = true; // OK
value = 42; // OK
value = "Hello World"; // OK
value = []; // OK
value = {}; // OK
value = Math.random; // OK
value = null; // OK
value = undefined; // OK
value = new TypeError(); // OK
value = Symbol("type"); // OK
对unknow
类型的变量赋值都被认为是类型正确的
但是当