在本章中,我们将介绍一些在 JavaScript 代码中最常见的值的类型,并说明在 TypeScript 中描述这些类型相应的方法
以下类型按照其在TypeScript中的等级进行排序
TypeScript也有一个特殊类型,any,当您不希望某个特定值导致类型检查错误时,可以使用它。
当一个值的类型为 any 时,您可以访问它的任何属性(这些属性反过来又是 any 类型的)。像调用函数一样调用它,将它赋给(或从)任何类型的值,或者几乎任何其他在语法上合法的值:
let obj: any = { x: 0 };
// None of the following lines of code will throw compiler errors.
// Using `any` disables all further type checking, and it is assumed
// you know the environment better than TypeScript.
obj.foo();
obj();
obj.bar = 100;
obj = "hello";
const n: number = obj;
如果没有指定类型,并且 TypeScript 无法从上下文推断类型,则编译器通常会默认其类型为Any。
但是,您通常希望避免这种情况,因为任何类型都不会进行类型检查。使用编译器flag noImpicityAny 将任何隐式的 any 标记为错误
unknown和any一样,可以为其赋任意值,但比any类型更加安全。当不知道一个值是什么类型时,优先使用unknown类型,再考虑any
let a: unknown = 1;
let b: number = 5;
let c :any = 2;
a = b; // 可以给unknown赋值
b = a; // 但不能给其他类型赋unknown
c = a; // 允许
let obj: unknown = {property: "1", fn: () => 123}
obj.property // unknown
obj.fn // unknown
在日常开发中不建议使用该类型