内置类型any、unknown、never
any
- any变量可以在声明后再次接受任意类型的值,同时也可以被赋值给任意其他类型的值。(挺淫乱的一个类型)。
- 类型系统中的
Top Type
使用any的小tips
- 类型不兼容报错或类型太复杂不想全部声明,考虑使用类型断言。
- 表达一个未知类型,更合理的方式是使用unknown。
unknown
- unknown可以在声明后再次接受任意类型的值,但是只能赋值给any、unknown类型的值。(有点淫乱的一个类型)
- 要对unknown进行属性访问时,需要进行类型断言。
never
bottom Type- 一个虚无的类型。
类型断言
在ts类型分析不正确或者不符合预期的时候,使用类型断言。 或者作为代码提示的辅助工具。 比如下列稍微复杂的接口:
interface IStruct {
foo: string;
bar: {
barPropA: string;
barPropB: number;
barMethod: () => void;
baz: {
handler: () => Promise<void>;
};
};
}
// 使用类型标注:一堆类型报错,需要实现里面的结构。
const obj : IStruct = {};
// 使用类型断言,不仅不需要实现整个接口接口,还可以保留类型提示,不用完整的实现结构。
const obj = <IStruct> {};
非空断言
非空断言其实是类型断言的简写。 与?可选链不同的是,可选链会在某一部分收到undefined、null时直接短路,不会发生后续的调用。而非空断言的运行时仍然会保持调用链。