TS 在内置了一些常用的条件类型,可以在 lib.es5.d.ts 中查看:
Exclude<T, U> // 从 T 可分配给的类型中排除 U。Extract<T, U> // 从 T 可分配的类型中提取 U。NonNullable<T> // 从 T 中排除 null 和 undefined。ReturnType<T> // 获取函数类型的返回类型。InstanceType<T> // 获取构造函数类型的实例类型。
ReturnType
源码
/*** Obtain the return type of a function type*/type ReturnType<T extends (...args: any[]) => any> = T extends (...args: any[]) => infer R? R: any;
使用场景
function getUserInfo() {return { name: "Ivan", age: 25 };}// 通过 ReturnType 将 getUserInfo 的返回值类型赋给了 UserInfotype UserInfo = ReturnType<typeof getUserInfo>;const userA: UserInfo = {name: "xcat",age: 27};
更多内置条件类型的介绍可以查看 官方文档 中的 Predefined conditional types 部分。
