在普通场景下,使用typescript的基本类型以及高级类型(联合类型,交叉类型等)已经足够,在特殊场景下我们需要对类型进行推断,typescript内置了一部分常用的类型工具
使用typescript类型推断可以帮助我们由一个类型得到另外一个类型
typescript内置的类型工具
以下为部分内置工具类型以及相关的应用
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
// 将所有属性设为可选
type Partial<T> = {
[P in keyof T]?: T[P];
};
// 将所有属性设为必须
type Required<T> = {
[P in keyof T]-?: T[P];
};
// 例如以此为工具将类型部分属性设置为必需属性
type RequiredProps<T, K extends keyof T> = {
[p in K]-?: T[p]
} & T
type data = {
a: string
c?: string
d?: boolean
}
// {
// a: string
// c: string
// d ?: boolean
// }
type c = RequiredProps<data, ' c'>
// Omit 为Pick和Exclude的衍生工具
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
一些类型继承关系
// false
type stringIsN