TypeScript详解十三:内置工具类型

本文详细介绍了TypeScript中的几个常用内置工具类型:Partial用于将接口的属性变为可选,Required将可选属性变为必填,Readonly使属性变为只读,Pick则用于从接口中选择特定属性,而Record则用于创建映射新类型的对象。通过示例代码展示了这些工具类型的使用方法及其源码实现。


前言

TS为了方便开发者使用,在内部提供了非常多的工具类型,如Partial、Required、ReadOnly等等,本篇文章主要用于记录了一些常用的内置工具类型的使用及源码实现,以便参考。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是ts内置工具类型

TypeScript 附带了大量类型,可以帮助进行一些常见的类型操作,通常称为 Utility Types。

二、使用示例

1.Partial

  • 将必填参数变为可选参数
namespace a {
   
   
  // 示例一:
  interface A {
   
   
    name: string,
    age: number,
    sex: string
  }
  // 接口A中的参数通过内置工具类型Partial变成了可选参数
  type PartialA = Partial<A>;
  let a: PartialA = {
   
   
    // 此处传参可以任意个数,但只能传已定义的参数
    name: '张三',
    age: 10
  }

  // 示例二:
  interface Company {
   
   
    id: number,
    name: string
  }
  interface Person {
   
   
    id: number,
    name: string,
    company: Company
  }
  // 实现DeepPartial,将参数深度转换成可选参数
  type DeepPartial<T> = {
   
   
    [U in keyof T]?: T[U] extends object ? DeepPartial<T[U]> : T[U];
  }
  type PartialPerson = DeepPartial<Person>;
  let p: PartialPerson = {
   
   
    // 此处的参数已经变为可选参数,可根据自己需要传递
    id: 10,
    name: '张三',
    company: {
   
   
      name: '美团'
    }
  }
}
  • Partial的实现源码
namespace b {
   
   
  interface A {
   
   
    name: string,
    age: number,
    sex: string
  }
  type Partial<T> = {
   
   
    // 原理:
    // 1.通过keyof拿到T中的所有key
    // 2.迭代所有的key
    // 3.统一加上可选参数处理
    // 4.返回迭代值的类型
    [P 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

剑九_六千里

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

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

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

打赏作者

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

抵扣说明:

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

余额充值