typescript中工具类型高级用法

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
}
posted @   你怕黑暗么  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示