问答题1188/1646TypeScript中的类型有哪些?

难度:
2021-07-08 创建

参考答案:

一、基础类型(Primitive Types)

  1. 字面量类型
    包括字符串、数字、布尔字面量,如 'success' | 'error',常用于联合类型限制特定值。

  2. 标准原始类型

    • string:包含模板字符串类型(如 `id-${number}`
    • number:支持二进制、八进制等字面量
    • boolean:严格区分 true/false 字面量类型
    • symbol:包含 unique symbol 类型(const sym = Symbol()
    • bigint:支持 100n 类型标注
  3. 特殊原始类型

    • nullundefined:默认是所有类型的子类型(开启 strictNullChecks 后变为独立类型)
    • void:表示无返回值,与 undefined 有细微差异
    • never:用于永不返回的函数或不可能的类型(如 throw Error()

二、对象类型(Object Types)

  1. 结构化类型

    • 接口(interface):支持继承、合并声明
    • 类型别名(type):支持联合、交叉等复杂操作
    • 匿名对象类型:如 { id: string; count?: number }
  2. 数组与元组

    • 数组:number[]Array<string>
    • 元组:固定长度类型,如 [x: number, y?: string]
    • 只读变体:ReadonlyArray<T>
  3. 函数类型

    • 参数类型与返回值类型标注
    • 重载签名(Overload Signatures)
    • 构造函数类型(new (...args) => T

三、高级类型(Advanced Types)

  1. 组合类型

    • 联合类型(A | B):需类型收窄(Narrowing)处理
    • 交叉类型(A & B):类型合并,可能产生 never
  2. 工具类型(Utility Types)

    • 转换类:Partial<T>Required<T>Readonly<T>
    • 结构操作类:Pick<T, K>Omit<T, K>Record<K, V>
    • 函数相关:Parameters<T>ReturnType<T>
    • 条件类:Exclude<T, U>Extract<T, U>
  3. 模板字面量类型(TS 4.1+)
    type HttpMethod = `HTTP_${'GET' | 'POST'}`
    配合 infer 可实现复杂字符串解析

  4. 条件类型(Conditional Types)
    T extends U ? X : Y 构成类型逻辑的基础,常用于泛型约束

  5. 映射类型(Mapped Types)
    通过 in 操作符动态生成类型:

    1type OptionsFlags<T> = { 2 [K in keyof T]: boolean; 3};

最近更新时间:2025-07-16

赞赏支持

题库维护不易,您的支持就是我们最大的动力!