TS 在内置了一些常用的条件类型,可以在 lib.es5.d.ts 中查看:

  1. Exclude<T, U> // 从 T 可分配给的类型中排除 U。
  2. Extract<T, U> // 从 T 可分配的类型中提取 U。
  3. NonNullable<T> // 从 T 中排除 null 和 undefined。
  4. ReturnType<T> // 获取函数类型的返回类型。
  5. InstanceType<T> // 获取构造函数类型的实例类型。

我们来介绍一下其中 ReturnType 的用法

ReturnType

源码

  1. /**
  2. * Obtain the return type of a function type
  3. */
  4. type ReturnType<T extends (...args: any[]) => any> = T extends (
  5. ...args: any[]
  6. ) => infer R
  7. ? R
  8. : any;

使用场景

  1. function getUserInfo() {
  2. return { name: "Ivan", age: 25 };
  3. }
  4. // 通过 ReturnType 将 getUserInfo 的返回值类型赋给了 UserInfo
  5. type UserInfo = ReturnType<typeof getUserInfo>;
  6. const userA: UserInfo = {
  7. name: "xcat",
  8. age: 27
  9. };

更多内置条件类型的介绍可以查看 官方文档 中的 Predefined conditional types 部分。