特殊类型
any never void unknown 都属于:TS 内置【特殊顶层类型】,不属于 字符串 数字 布尔 这类基础常规类型,是用来控制类型边界、类型安全的特殊类型。
TypeScript中的这四个特殊类型各有其独特的用途和使用场景。理解它们的区别对于编写类型安全且可维护的代码至关重要。
any 任意类型
any 是 TypeScript 中最宽的类型,可以表示任何值。在类型检查中,any 类型的变量可以赋值给任何类型的变量,也可以调用任何方法。
放弃 TS 类型检查,等同于 JS
TypeScript
let a: any;
a = 1;
a = "abc";
a.xxx(); // 不报错,运行才炸1
2
3
4
2
3
4
void 无返回值
void 类型表示函数没有返回值。在 TypeScript 中,函数可以没有返回值,也可以返回 void 类型。
函数没有返回值,多用于函数返回
TypeScript
function fn(): void {
// 不写 return 或 return;
}1
2
3
2
3
never 永不存在的类型
never 类型表示永不存在的类型。在 TypeScript 中,never 类型的变量只能赋值给 never 类型的变量,或者在函数中抛出异常。
永远不会有值、函数永不结束、错误抛出
TypeScript
// 1. 抛出错误
function err(): never {
throw new Error("报错");
}
// 2. 死循环
function loop(): never {
while(true) {}
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
unknown 未知类型
unknown 类型表示未知类型的值。在 TypeScript 中,unknown 类型的变量只能赋值给 unknown 类型的变量,或者在函数中抛出异常。
安全的 any,必须先做类型判断 / 断言才能使用
TypeScript
let u: unknown;
u = 123;
// 必须判断/断言才能调用
if(typeof u === "number"){
u.toFixed();
}1
2
3
4
5
6
7
2
3
4
5
6
7

