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表示函数类型

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
01Typescript介绍 、Typescript安装、Typescript开发工具(15分51秒).rar 02 Typescript 的数据类 boolean 数字类 number类 string类 array类元组类 (tuple)枚举类 (enum) (上) (20分29秒).rar 03 Typescript的数据类 任意类 (any) null 和 undefined void类 never类 (下) (16分6秒).rar 04 Typescript的函数 函数的定义 可选参数 默认参数 剩余参数 函数重载 箭头函数 (31分50秒).rar 05 Typescript的类 Es5的类和静态方法 继承 (原链继承、对象冒充继承、原链+对象冒充组合继承) (20分40秒).rar 06 Typescript的类 类的定义 继承 类里面的修饰符 (上) (29分4秒).rar 07 Typescript的类 类的静态属性 静态方法 抽象类 多态 (下) (27分52秒).rar 08 Typescript的接口的用途 以及属性类接口 (19分46秒).rar 09 Typescript的属性类接口【案例】 定义Ajax请求数据的接口 ts封装ajax (8分).rar 10 Typescript的函数类口 【案例】 加密方法约束 (5分11秒).rar 11 Typescript的可索引接口 类类接口 (12分2秒).rar 12 Typescript接口扩展、接口的继承 (7分19秒).rar 13 Typescript泛型 泛型变量 泛型类 (22分54秒).rar 14 Typescript的泛型接口 泛型类接口 (8分42秒).rar 15 Typescript泛型类 - 把类作为参数类泛型类 (21分47秒).rar 16 Typescript 类、接口、类 、泛型 综合使用--Typescript封装统一操作Mysql Mongodb Mssql的底层类库 (14分31秒).rar 17 Typescript 模块 以及模块化封装DB库 封装类似Mongoose风格的类库 (25分22秒).rar 18 命名空间 命名空间块化 (11分35秒).rar 19 装饰器定义 类装饰器 属性装饰器 装饰器工厂 (23分17秒).rar 20 装饰器 方法装饰器 方法参数装饰器 装饰器的执行顺序 (28分39秒

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜空孤狼啸

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值