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、联合/交叉类型、泛型。

核心作用: 提供类型安全、代码提示、重构支持,使代码更健壮、可维护。

更多推荐