TypeScript特有类型及作用
·
TypeScript 特有类型及作用
1. any(任意类型)
let value: any = 42;
value = "hello";
value = true;
作用: 跳过类型检查,兼容未知类型或动态数据。适用于迁移 JS 代码或处理第三方库。
2. unknown(未知类型)
let value: unknown = 42;
value = "hello";
// 使用前必须类型检查
if (typeof value === "string") {
console.log(value.toUpperCase());
}
作用: 类型安全的 any,使用前必须进行类型检查或断言。
3. void(无类型)
function log(message: string): void {
console.log(message);
}
作用: 表示函数没有返回值,只能赋值为 undefined。
4. never(永不存在的值)
function throwError(msg: string): never {
throw new Error(msg);
}
function infiniteLoop(): never {
while (true) {}
}
作用: 表示永远不会发生的值,用于穷尽性检查或异常处理。
5. tuple(元组)
let tuple: [string, number] = ["Alice", 25];
console.log(tuple[0]); // "Alice"
console.log(tuple[1]); // 25
作用: 固定长度和类型的数组,每个位置类型可不同。
6. enum(枚举)
enum Status {
Pending = "pending",
Success = "success",
Error = "error"
}
let currentStatus: Status = Status.Pending;
作用: 定义一组命名常量,提高代码可读性和可维护性。
7. interface(接口)
interface User {
id: number;
name: string;
email?: string; // 可选属性
}
let user: User = { id: 1, name: "Alice" };
作用: 定义对象结构契约,支持扩展和实现。
8. type(类型别名)
type ID = string | number;
type Point = { x: number; y: number };
type Callback = (data: string) => void;
作用: 为类型创建别名,支持联合类型、交叉类型、函数类型等。
9. 联合类型(Union)
let id: string | number = "abc";
id = 123; // 允许
function printId(id: string | number) {
if (typeof id === "string") {
console.log(id.toUpperCase());
} else {
console.log(id);
}
}
作用: 表示值可以是多种类型之一。
10. 交叉类型(Intersection)
interface A { a: string }
interface B { b: number }
type AB = A & B;
let obj: AB = { a: "hello", b: 42 };
作用: 合并多个类型,对象需包含所有类型的属性。
11. 字面量类型
let direction: "left" | "right" | "up" | "down" = "left";
let count: 0 | 1 | 2 = 1;
作用: 限定值只能是特定的字面量,提高类型安全。
12. 泛型(Generics)
function identity<T>(arg: T): T {
return arg;
}
let result = identity<string>("hello");
let num = identity<number>(42);
作用: 创建可复用的组件,支持多种类型同时保持类型安全。
对比总结
| 类型 | 作用 | 使用场景 |
|---|---|---|
| any | 跳过类型检查 | 迁移 JS、第三方库 |
| unknown | 安全任意类型 | 需类型检查的场景 |
| void | 无返回值 | 函数返回值 |
| never | 永不存在的值 | 异常处理、穷尽检查 |
| tuple | 固定类型数组 | 坐标、键值对 |
| enum | 命名常量 | 状态码、选项 |
| interface | 对象契约 | API 定义、类实现 |
| type | 类型别名 | 联合/交叉类型 |
| 泛型 | 类型参数化 | 通用函数/组件 |
结论
TS 特有类型: any、unknown、void、never、tuple、enum、interface、type、联合/交叉类型、泛型。
核心作用: 提供类型安全、代码提示、重构支持,使代码更健壮、可维护。
更多推荐

所有评论(0)