泛型工具
# 泛型工具
# Partial
是一个泛型类型,用于将一个类型的所有属性变为可选。
interface User {
name: String
age: String
}
type PartialUsre = Partial<User>
// 实现原理
type customPartial<T> = {
[P in keyof T] : T[P]
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# Required
是一个泛型类型,用于将一个类型的所有属性变为必选。
interface User {
name: String
age: String
}
type RequiredUser = Required<User>
// 实现原理
type customRequired<T> = {
[P in keyof T]-?: T[P]
}
type RequiredUser = customRequired<User>
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# pick
用于从一个类型中选取指定的属性。
interface User {
name: String
age: String
}
type pickUser = Pick<User, 'name'>
// 实现原理
type customPick<T, K extends keyof T> = {
[P in K]: T[P]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# Exclude
用于从一个类型的属性集合中排除指定的属性。 原理:为什么要搞never? 因为never在联合类型中会被忽略
interface User {
name: String
age: String
}
type ExcludeUsre = Exclude<'A' | 'B' | 'C', 'A' | 'B'>
// 实现原理
type CustomUsre<T,K> = T extends K ? never : T
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# Omit
用于创建一个新类型,该新类型从原始类型中排除指定的属性。
interface User {
name: String
age: String
}
type OmitUsre = Omit<User, 'age'>
type customOmit<T, K> = Pick<T, Exclude<keyof T, K>>
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
上次更新: 2024/04/26, 0:04:00