Parameters,该工具类型能够获取函数类型T的参数类型并使用参数类型构造一个元组类型。示例如下:
type T0 = Parameters<() => string>; // []
type T1 = Parameters<(s: string) => void>; // [string]
type T2 = Parameters<<T>(arg: T) => T>; // [unknown]
type T4 = Parameters<
(x: { a: number; b: string }) => void
>; // [{ a: number, b: string }]
type T5 = Parameters<any>; // unknown[]
type T6 = Parameters<never>; // never
type T7 = Parameters<string>;
// ~~~~~~~
// 编译错误!string类型不符合约束'(...args: any) => any'
type T8 = Parameters<Function>;
// ~~~~~~~~
// 编译错误!Function类型不符合约束'(...args: any) => any'
partial 该工具接收一个类型,然后可以返回一个使该类型所有的属性都变成可选的新类型,如下
type Person = {
name: string;
age: number
}
const a = Partial<Person>: {name:'xiaoming'}
or
const b = Parital<Person> : {}
/**
@desc Partial<Person>相当把Person类型改成 {name?:string,age?:number}
*/
Omit<T, key1 | key2 ]>该工具接收一个T类型和一个联合类型,然后返回一个删掉key属性的新类型,如下
type person = {
name: string;
age: nuber
}
const a = Omit<person, 'name'> : {age:18}
/**
@desc Omit <person, 'name'>相当于把person类型改成{age: number}
*/
Pick<T, key1|key2> 该工具接收一个处理类型,和一个联合类型,然后返回一个中只包含联合类型属性的新类型,如下
type person = {
name: string;
age: number
}
const a = Pick<person, 'name'>:{name: 'xiaoming'}
/**
@desc Omit <person, 'name'>相当于把person类型改成{name: string}
*/
Record定义一个的对象键值对key value类型工具
// 例如我想有一个对象,属性为A B C 值为数字类型
type key = 'A' | 'B'|'C'
const obj = Record<key , number> = {
A:1,
B:2,
C:3
}