实用程序类型 utility-type
- Partial<T> 将类型 T 的所有属性设置为可选
- Required<T> 将类型 T 的所有属性设置为必选
- Readonly<T> 将类型 T 的所有属性设置为只读
- Pick<T, K> 从类型 T 中选取一组属性 K 并返回一个新的类型
- Record<K, T> 将类型 K 中的所有属性的值转换为类型 T 并返回一个新的类型
- Omit<T, K> 从类型 T 中删除一组属性 K 并返回一个新的类型
- Exclude<T, U> 从类型 T 中排除可以赋值给类型 U 的所有属性并返回一个新的类型
- Extract<T, U> 从类型 T 中提取可以赋值给类型 U 的所有属性并返回一个新的类型
- NonNullable<T> 从类型 T 中排除 null 和 undefined 并返回一个新的类型
- Parameters<T> 获取函数类型 T 的参数类型并返回一个由它们组成的元组类型
- ConstructorParameters<T> 获取构造函数类型 T 的参数类型并返回一个由它们组成的元组类型
- ReturnType<T> 获取函数类型 T 的返回类型
- InstanceType<T> 获取构造函数类型 T 的实例类型
- ThisParameterType<T> 获取函数类型 T 的 this 参数类型
- OmitThisParameter<T> 从函数类型 T 中删除 this 参数并返回一个新的类型
- ThisType<T> 用于指定函数的 this 类型
Partial<T>
将类型 T 的所有属性设置为可选
ts
interface Todo {
title: string;
description: string;
}
type subTodo = Partial\<Todo\>
const todo1: subTodo = {
title: 'This is a title'
}
Required<T>
将类型 T 的所有属性设置为必选
ts
interface Todo {
title?: string;
description?: string;
}
type subTodo = Required\<Todo\>
const todo1: subTodo = {
title: 'This is a title',
description: 'This is a description'
}
Readonly<T>
将类型 T 的所有属性设置为只读
ts
interface Todo {
title: string;
description: string;
}
type subTodo = Readonly\<Todo\>
const todo1: subTodo = {
title: 'This is a title',
description: 'This is a description'
}
todo1.title = 'This is a new title' // Cannot assign to 'title' because it is a read-only property.
Pick<T, K>
从类型 T 中选取一组属性 K 并返回一个新的类型
ts
interface Todo {
title: string;
description: string;
completed: boolean;
}
type subTodo = Pick\<Todo, 'title' | 'completed'\>
const todo1: subTodo = {
title: 'This is a title',
completed: false
}
Record<K, T>
将类型 K 中的所有属性的值转换为类型 T 并返回一个新的类型
ts
type subTodo = Record\<'title' | 'completed', string\>
const todo1: subTodo = {
title: 'This is a title',
completed: 'false'
}
Omit<T, K>
从类型 T 中删除一组属性 K 并返回一个新的类型
ts
interface Todo {
title: string;
description: string;
completed: boolean;
}
type subTodo = Omit\<Todo, 'title' | 'completed'\>
const todo1: subTodo = {
description: 'This is a description'
}
Exclude<T, U>
从类型 T 中排除可以赋值给类型 U 的所有属性并返回一个新的类型
ts
type subTodo = Exclude\<'title' | 'completed', 'title'\>
const todo1: subTodo = 'completed'
Extract<T, U>
从类型 T 中提取可以赋值给类型 U 的所有属性并返回一个新的类型
ts
type subTodo = Extract\<'title' | 'completed', 'title'\>
const todo1: subTodo = 'title'
NonNullable<T>
从类型 T 中排除 null 和 undefined 并返回一个新的类型
ts
type subTodo = NonNullable\<'title' | 'completed' | null | undefined\>
const todo1: subTodo = 'title'
Parameters<T>
获取函数类型 T 的参数类型并返回一个由它们组成的元组类型
ts
type subTodo = Parameters\<(title: string, completed: boolean) =\> void\>
const todo1: subTodo = ['This is a title', false]
ConstructorParameters<T>
获取构造函数类型 T 的参数类型并返回一个由它们组成的元组类型
ts
type subTodo = ConstructorParameters\<typeof Todo\>
const todo1: subTodo = ['This is a title', 'This is a description', false]
ReturnType<T>
获取函数类型 T 的返回类型
ts
type subTodo = ReturnType\<(title: string, completed: boolean) =\> void\>
const todo1: subTodo = undefined
InstanceType<T>
获取构造函数类型 T 的实例类型
ts
type subTodo = InstanceType\<typeof Todo\>
const todo1: subTodo = {
title: 'This is a title',
description: 'This is a description',
completed: false
}
ThisParameterType<T>
获取函数类型 T 的 this 参数类型
ts
type subTodo = ThisParameterType\<(title: string, completed: boolean) =\> void\>
const todo1: subTodo = undefined
OmitThisParameter<T>
从函数类型 T 中删除 this 参数并返回一个新的类型
ts
type subTodo = OmitThisParameter\<(title: string, completed: boolean) =\> void\>
const todo1: subTodo = (title: string, completed: boolean) =\> {
console.log(title, completed)
}
ThisType<T>
用于指定函数的 this 类型
ts
type subTodo = ThisType\<{ title: string, completed: boolean }\>
const todo1: subTodo = {
title: 'This is a title',
completed: false,
log() {
console.log(this.title, this.completed)
}
}