Partial
将全部属性变成可选项
type User = {
id: number,
name: string
}
const jack: Partial<User> = {
name: 'jack'
}
Required
将全部属性变为必选项
type User = {
id?: number,
name?: string
}
const jack: Required<User> = { // ❌报错: 没有id
name: 'jack',
}
Readonly
所有属性只能读不能修改
type User = {
id?: number,
name?: string
}
const jack: Readonly<User> = {
name: 'jack'
}
jack.name = 'tom' // ❌报错: 不能修改
Pick
提取部分属性
type User = {
id?: number,
name?: string,
age: number
}
// 只要 name 和 age 属性
type User2 = Pick<User, 'name' | 'age' >
Omit
去掉一些属性
type User = {
id?: number,
name?: string,
age: number
}
// 去掉 name 和 age 属性
type User2 = Omit<User, 'name' | 'age' >
Exclude/Extract
- 类似于 Pick/Omit
- Exclude/Extract只能处理基本数据类型
- Pick/Omit 只能处理引用类型
type A = number | string | boolean | null
// 去掉
type User2 = Exclude<A, string | number > // boolean | null
// 提取
type User3 = Extract<A, string | null> // string | null
ReturnType
获取一个函数的返回类型
function fn() {
return 'aaa'
}
type F = ReturnType<typeof fn> // string