Partial

源码:

type Partial<T> = {[P in keyof T]?: T[P];};

作用:

Partial 可以快速把某个接口类型中定义的属性变成可选的 (Optional)

Readonly

源码:

type Foo = {readonly bar: number;bas: number;
}const foo: Foo = {bar: 123, bas: 123};
foo.bar = 1 //不能将1分配到foo.bar,因为foo.bar属性是只读的。
foo.bas = 1interface Foo{readonly bar: number;bas: number;
}const foo: Foo = {bar: 123, bas: 123};
foo.bar = 1 //不能将1分配到foo.bar,因为foo.bar属性是只读的。
foo.bas = 1

作用:

readonly用于标记一个属性是只读的,也就是不可修改的。

Record

源码:

interface PageInfo {title: string;
}type Page = "home" | "about" | "contact";const nav: Record<Page, PageInfo> = {about: { title: "about" },contact: { title: "contact" },home: { title: "home" },
};

作用:

Record用于定义一个对象的 key 和 value 类型

Pick

源码:

type Pick<T, K extends keyof T> = {[P in K]: T[P];
};interface Person {name: string;age: number;id: number;sex: 0 | 1;
}// 问女生年纪不太礼貌,所以我们不需要 age 这个属性
type Woman = Pick<Person, "name" | "id">;// 此时 Woman 等效于 Femaleinterface Female {name: string;id: number;
}

作用:

采集,Record用于定义一个对象的 key 和 value 类型

Omit

源码:

type Omit<T, K extends string | number | symbol> = {[P in Exclude<keyof T, K>]: T[P];
};interface User {id: number;name: string;age: number;sex: 0 | 1;tel: number;
}type EditUser = Omit<User, "id">; // 就是在 User 的基础上,去掉 id 属性

作用:

省略/剔除,Omit 与 Pick 作用相似,只不过 Omit 是:以一个类型为基础支持剔除某些属性,然后返回一个新类型。

Exclude

源码:

type Exclude<T, U> = T extends U ? never : T;interface Person {name: string;
}interface NewPerson {name: string;age: number;id: number;
}// 案例1
// Person如果extends继承NewPerson(继承了NewPerson的属性),就never异常,否则就返回Person
const obj: Exclude<Person, NewPerson> = {name: ''
}

作用:

排除/不包括

Extract

源码:

type Extract<T, U> = T extends U ? T : never;interface Person {name: string;
}interface NewPerson {name: string;age: number;id: number;
}// 案例1
//  NewPerson如果extends继承Person(继承了Person的属性),就返回NewPerson,否则就never异常
const obj: Extract<NewPerson, Person> = {name: '',age: 1,id: 1
}

作用:

提取/包括

NonNullable

源码:

type NonNullable<T> = T extends null | undefined ? never : T

作用:

NonNullable工具类型可以从类型 T 中剔除 null 和 undefined 类型,并构建一个新的类型

ReturnType

源码:

type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;type T0 = ReturnType<() => string>; // stringtype T1 = ReturnType<() => { a: string, b: number }>; // { a: string; b: number }

作用:

ReturnType工具类型能获取函数类型 T 的返回值类型

InstanceType

源码:

type InstanceType<T extends abstract new (...args: any) => any> = T extends abstract new (...args: any) => infer R ? R : any;class A {x = 0;}type T0 = InstanceType<typeof A>; // Atype T1 = InstanceType<new (s?: string) => object>; // object

作用:

InstanceType能获取构造函数的返回值类型

ts常用内置工具类型相关推荐

  1. 写TS效率大提升,TypeScript中常用内置工具类型Omit、Pick、Partial、Required、Readonly、Exclude 、Extract

    TS中常用的工具映射类型,让写TS时效率大大提升,避免无意义的重复性定义. 1.Omit 省略/剔除 顾名思义 可以剔除 已定义对象中 自己不需要的一部分形成新的定义类型. interface Use ...

  2. TS高级类型内置工具类型

    Partial<T> 将泛型 T 中的所有属性转化为可选属性 /*** Make all properties in T optional*/ type Partial<T> ...

  3. [MODIS数据处理#2]常用的Arcmap内置工具(一)

    上一篇文章中,我们使用MRT工具完成了对MODIS数据的预处理,并对栅格进行了预处理. 接下来的两期是对Arcmap中常用内置工具的介绍,使用的ArcGIS版本为10.2: • 投影栅格 • 裁剪 • ...

  4. python迭代器-迭代器取值-for循环-生成器-yield-生成器表达式-常用内置方法-面向过程编程-05...

    迭代器 迭代器 迭代: # 更新换代(其实也是重复)的过程,每一次的迭代都必须基于上一次的结果(上一次与这一次之间必须是有关系的) 迭代器: # 迭代取值的工具 为什么用迭代器: # 迭代器提供了一种 ...

  5. 零基础学Python(第二十二章 常用内置函数)

    本套学习内容共计[22]个章节,每个章节都会有对应的从0-1的学习过程详细讲解,希望可以给更多的人提供帮助. 开发环境:[Win10] 开发工具:[Visual Studio 2019] 本章内容为: ...

  6. (六)Java关于内置工具类

    Java 内置工具类(String.StringBuffer.LinkedList.ArrayList.HashMap等工具) ​ Java提供了异常丰富的工具类数量巨阳之多,对于 Java学习者而言 ...

  7. python常用内置函数总结-Python 常用内置函数

    Python 常用内置函数如下: 1. abs()函数返回数字的绝对值. print( abs(-45) )# 返回45print("abs(0.2):",abs(0.2))#返回 ...

  8. jmeter中没有sampler_jmeter(七)-BeanShell常用内置变量和场景

    Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log ...

  9. oracle 触发器 和 常用内置程序包

    --触发器和常用内置程序包 --author:shine --一.触发器: --1.触发器组成:由触发器语句,触发器限制,触发器操作三部分组成. --exp:1.1.1 create or repla ...

最新文章

  1. 上传数据,直接分析,这才是真正的生物云
  2. oracle 记录被另一个用户锁住
  3. axios请求接口http_使用axios请求接口,几种content-type的区别详解
  4. C语言 socket listen()函数(socket()函数创建的socket(套接字描述符)默认是一个主动类型的,listen函数将socket变为被动类型的,等待客户的连接请求)
  5. 一些Select检索高级用法
  6. iOS-MVVM-模式介绍
  7. 算法只能应用于计算机吗,把你的原则转换成算法,让计算机和你一起决策
  8. 华中科技大学计算机预推免2021,华中科技大学光学与电子信息学院2021年推免预报名通知...
  9. 阿里飞天大数据平台正式亮相:国内最大计算平台
  10. 《『若水新闻』客户端开发教程》——11.代码编码(3)
  11. NQL.Net 简介
  12. CSDN Blog升级通告
  13. 01 Nginx的高并发处理
  14. 使用kubernetes 官网工具kubeadm部署kubernetes(使用阿里云镜像)
  15. 学java用什么编译器_学习Java用什么编译软件好
  16. 微信小程序引入阿里矢量图标
  17. 中国省份信息与编码和世界所有国家信息与编码
  18. ping命令显示时间
  19. VisualSVN 5.1.7破译License Key
  20. 读书笔记--一个人的朝圣

热门文章

  1. Js 垃圾回收机制简述
  2. vue 加减数字输入框
  3. 身份证号码正则匹配(正则表达式)
  4. vue身份证正则校验
  5. 深度优先搜索详解 C++实现
  6. scala函数式编程系列(七)--- 模式匹配和偏函数
  7. 宝塔面版_域名SSL证书到期如何续期
  8. 计算机学院校运会入场词,大学运动会入场解说词大全
  9. nginx介绍与应用
  10. Matplotlib annotate注解的用法