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 的返回值类型赋给了 UserInfo
type UserInfo = ReturnType<typeof getUserInfo>;
const userA: UserInfo = {
name: "xcat",
age: 27
};
更多内置条件类型的介绍可以查看 官方文档 中的 Predefined conditional types 部分。