定义

  • 顾名思义,就是按条件给予类型

    1. T extends U ? X : Y
  • extends是关键字,TUXY均表示一种类型,具体如下所示

    1. type TypeName<T> = T extends string
    2. ? string
    3. : T extends number
    4. ? number
    5. : boolean;

    分布式条件类型

  • 在以上语法中,如果类型T是一个裸类型参数,那么该条件类型也称作分布式条件类型 ```typescript // 裸类型参数 type T1 = T extends string ? true : false;

// 非裸类型参数 type T2 = [T] extends [string] ? true : false;

  1. - 从字面上理解,裸类型参数是指裸露在外的没有任何装饰的类型参数,如果类型参数不是复合类型的组成部分而是独立出现,那么该类型参数称作裸类型参数
  2. <a name="ep05k"></a>
  3. ## 分布式行为
  4. - 与常规类型相比,分布式条件类型具有一种特殊的行为,那就是在实际类型参数实例化分布式条件类型时,如果实际参数类型T为联合类型的话,那么会将分布式条件类型展开为由子条件类型构成大的联合类型
  5. ```typescript
  6. type T = boolean | number;
  7. type Type = T extends U ? X : Y ;
  8. // 等同于
  9. // type Type = (boolean extends U ? X : Y) | (number extends U ? X : Y);