TypeScript 泛型工具类型

前言

TypeScript 泛型工具类型在实际项目中的应用
在TS中内置了一些常用的工具类型, 用来简化我们TS中的一些常见操作 这些泛型工具类型都是基于泛型实现的, 并且是内置的, 我们也可以直接在代码中使用

Partial(可选)

Partial(可选) 使用Partial<T>来构造或者创建一个类型, 将T的所有属性都设置为可选的

在这里插入图片描述

代码解读

interface Props {
  id: number;
  children: number[];
}




type partialProps = Partial<Props>;
// Partial(可选) 使用Partial<T>来构造或者创建一个类型, 将T的所有属性都设置为可选的

let obj: Props = {
  id: 10,
  children: [1],
};

let obj2: partialProps = {
  id: 10,
};

// 通过上面的实例, 我们可以发现, partialProps中的id和children就变成可选的了
// 但是生成的类型别名, 并不影响Props接口, 他只是创建了一个新的类型
let obj3: partialProps = {};


Readonly

Readonly<Props>是用来构造一个类型, 将Props中的所有属性全部变成只读的

在这里插入图片描述

代码解读

interface Props {
  id: number;
  children: number[];
}

// Readonly Readonly<Props>是用来构造一个类型, 将Props中的所有属性全部变成只读的
type readonlyProps = Readonly<Props>;
let readonlyObj: readonlyProps = {
  id: 10,
  children: [1],
};
readonlyObj.id = 2;

Pick

Pick<T, K>是从T中选择一组属性来构造新类型
Pick工具类型有两个类型变量: 第一个表示选择谁的属性, 第二个选择哪几个类型

在这里插入图片描述

代码解读

interface Props {
  id: number;
  name:string;
  children: number[];
}



// Pick  Pick<T, K>是从T中选择一组属性来构造新类型

// Pick工具类型有两个类型变量: 第一个表示选择谁的属性, 第二个选择哪几个类型
type pickProps = Pick<Props, 'id' | 'children'>;
let pickObj: pickProps = {
  id: 10,
  children: [1],
};


Record

Record<K,T>构造一个对象类型, 属性键为K, 属性类型为T
Record工具类型有两个类型变量, 第一个表示对象有哪些属性, 第二个表示对象属性的类型

在这里插入图片描述

代码解读

interface Props {
  id: number;
  children: number[];
}


// Record  Record<K,T>构造一个对象类型, 属性键为K, 属性类型为T

// Record工具类型有两个类型变量, 第一个表示对象有哪些属性, 第二个表示对象属性的类型
type recordProps = Record<'a' | 'b', number | number[]>;
let recordObj: recordProps = {
  a: [1],
  b: 10,
};

// 我们解读一下上面使用的Record
// 首先我们创建的obj对象有两个属性, 分别是a和b, 属性值要求是字符串数组string[]或者数字类型

上面是常用的,下面是不常用的,需要的话往下看 ( 进阶 )

Required:Required与Partial相反,作用是将所有属性变成必选属性,用到的原理就是 ‘-?’ 符号

Exclude<T, U>表示从T中排除U类型或类型集合

Omit<T, K>的含义是从T对象类型中删除K

NonNullable一般用来从类型T中排除空类型,即判断是否存在null或undefined,如果不是则返回原类型

ReturnType是用来获取函数的返回值类型,其中T表示函数类型

相关推荐

  1. TypeScript 类型

    2024-04-10 03:56:03       33 阅读
  2. TypeScript

    2024-04-10 03:56:03       35 阅读
  3. Typescript

    2024-04-10 03:56:03       42 阅读
  4. typeScript9 (

    2024-04-10 03:56:03       42 阅读
  5. TypeScript:

    2024-04-10 03:56:03       41 阅读
  6. 理解typescript

    2024-04-10 03:56:03       34 阅读
  7. typescript-

    2024-04-10 03:56:03       32 阅读
  8. TypeScript(Generics)

    2024-04-10 03:56:03       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 03:56:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 03:56:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 03:56:03       82 阅读
  4. Python语言-面向对象

    2024-04-10 03:56:03       91 阅读

热门阅读

  1. npm install 太慢?解决方法

    2024-04-10 03:56:03       32 阅读
  2. 父子组件传值,子组件反显问题

    2024-04-10 03:56:03       29 阅读
  3. 选择排序-c++

    2024-04-10 03:56:03       37 阅读
  4. Linux从入门到精通 --- 1.初始Linux

    2024-04-10 03:56:03       40 阅读
  5. 线程常见问题

    2024-04-10 03:56:03       38 阅读
  6. c++day6

    c++day6

    2024-04-10 03:56:03      33 阅读
  7. 【接口测试】接口测试面试基础常识

    2024-04-10 03:56:03       39 阅读
  8. 京东采集器使用教程 京东商家爬虫软件分享

    2024-04-10 03:56:03       38 阅读
  9. 数字排列的方法

    2024-04-10 03:56:03       37 阅读
  10. 题目:取一个整数a从右端开始的4~7位。

    2024-04-10 03:56:03       33 阅读