Skip to content

4 种类型约束 #27

@astak16

Description

@astak16

ts 中,经常会用到类型约束,用来确保使用的类型是正确的,介绍 4 种类型约束

  1. 传入只能是数组,在传入的时候做约束,这种约束见的比较多

    type A<T extends unknown[]>
  2. 利用 extends 条件类型进行类型约束

    // 如果 T 是 string,则输出 T
    // 如果 T 不是 string,则输出 never
    type B<T> = T extends string ? T : never;
  3. 利用联合类型进行条件约束

    // 如果 T 是 string,则输出 T
    // 如果 T 不是 string,则输出 never
    type C<T> = T & string;
  4. typescript 4.7 推出了一个新的条件约束,利用 extends 语法

    // F 进行了类型约束,是 string 类型
    type D<T extends unknown> = T extends [
      infer F extends string,
      ...infer Rest
    ] ? F : never;
    
    // 在 4.7 之前,如果要保证 F 是 string 类型要用联合类型的形式
    type D<T extends unknown> = T extends [
      infer F,
      ...infer Rest
    ] ? F & string: never;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions