typescript中工具类型高级用法

Posted 黑暗之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 值为数字类型
const type key: string = \'A\' | \'B\'|\'C\'
const obj = Record<key , number> = 
A:1,
B:2,
C:3

以上是关于typescript中工具类型高级用法的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript学习笔记——TS类型/高级用法及实战优缺点

TypeScript学习笔记——TS类型/高级用法及实战优缺点

阿里前端大佬TypeScript学习笔记——TS类型/高级用法及实战优缺点

前端进阶-TypeScript高级类型 | 泛型约束泛型接口泛型工具类型

Typescript - - 高级用法

Typescript - - 高级用法