Utility Types
小于 1 分钟
Utility Types
Partial
传入属性变为可选项
type Partial<T> = {[P in keyof T]?: T[P]}
理解keyof
interface Person {
name: string
age: number
}
// T -> "name" | "age"
type T = keyof Person
Required
传入属性变为必填项
type Requried<T> = {[P in keyof T]-?: T[P]}
-?
将可选项 ?
去掉
Pick
从T提取一系列K的属性
type Pick<T, K extends keyof T> = {[P in K]: T[P]}
Exclude
排除 T 中 U 存在的属性
type Exclude<T, U> = T extends U ? never : T
如果T是U的子类型的话,那么就返回never
const str: Exclude<'1'| '2', '1'|'a'> = '2'
Omit
type Omit<T, K> = Pick<T, Exclude<keyof T, K>>
Exclude<keyof T, K>
将 T 中不属于 K 的属性