1.ReturnType

type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;
//推断函数返回值的数据类型 
const returnTypeFunc = () => {return [{a:1}]
}
type returnType = ReturnType<typeof returnTypeFunc>;
/*
type returnType = {a: number
}[]
*/

2.ConstructorParameters

type ConstructorParameters<T extends new (...args: any) => any> = T extends new (...args: infer P) => any ? P : never;
//推断实例对象参数的数据类型
class ConstructorParams {constructor(public a: string,public b: number) {console.log(a,b);}
}
type ConstructorParamesType = ConstructorParameters<typeof ConstructorParams>;
/*
type ConstructorParamesType = [a: string,b: number];
*/

3.InstanceType

type InstanceType<T extends new (...args: any) => any> = T extends new (...args: any) => infer R ? R : any;
//推断实例对象的返回数据类型
type InstanceTypeC = {name: string;age: number;
}
class CInstanceType {constructor(public a:boolean,public b:InstanceTypeC[]){this.a = a;this.b.push({name: 'Agwenbi',age: 25});}getA():boolean{return this.a;}getB():InstanceTypeC[]{return this.b;}
}
type InstanceTypes = InstanceType<typeof CInstanceType>;
/*
type InstanceTypes = CInstanceType;
*/

4.Partial

type Partial<T> = {[P in keyof T]?: T[P];
};
//将属性全部变为可选
type IPartial = {a: string;b: number;
}
type TPartial = Partial<IPartial>;
/*
type TPartial = {a?: string | undefined;b?: number | undefined;
}
*/

5.Required

type Required<T> = {[P in keyof T]-?: T[P];
};
//将可选属性全部改为必填
type IRequired = {a: string;b?: number;
}
type TRequired = Required<IRequired>;
/*
type TRequired = {a: string;b: number;
}
*/

6.Readonly

type Readonly<T> = {readonly [P in keyof T]: T[P];
};
//将属性全部变为只读
type IReadonly = {a: string;b: number;
}
type TReadonly = Readonly<IReadonly>;
/*
type TReadonly = {readonly a: string;readonly b: number;
}
*/

7.Pick

type Pick<T, K extends keyof T> = {[P in K]: T[P];
};
//从一个类型中提取想要的类型
type IPick = {a: string;b: number;c: boolean;
}
type TPick = Pick<IPick,'a' | 'b'>;
/*
type TPick = {a: string;b: number;
}
*/

8.Record

type Record<K extends keyof any, T> = {[P in K]: T;
};
//将K中的所有属性,转化成T类型
type TAny = 'name' | 'age';
type IRecord = {a: string;b: number;
}
type TRecord = Record<TAny , IRecord>;
const RecordVal: TRecord = {name: {a: '',b: 123},age: {a: '',b: 123}
}

9.Exclude

type Exclude<T, U> = T extends U ? never : T;
//如果T中含有U类型,则返回never,否则返回T
type IExclude = {a: string;b: number;
}
type UExclude = {a: string;
}
type TExclude = Exclude<IExclude,UExclude>;
/*
type TExclude = never
*/

10.Extract

type Extract<T, U> = T extends U ? T : never;
//如果T中含有U类型,则返回T
type IExtract = {a: string;b: number;
}
type UExtract = {a: string;
}
type TExtract = Extract<IExtract,UExtract>;
/*
type TExtract = {a: string;b: number;
}
*/

11.Omit

type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
//从对象T中,过滤掉K类型的属性
type IOmit = {a: string;b: number;
};
type TOmit = Omit<IOmit,'a' | 'c'>;
/*
type TOmit = {b: number;
}
*/

12.NonNullable

type NonNullable<T> = T extends null | undefined ? never : T;
//过滤掉null与undefined
type INonNullable = string | undefined | null;
type TNonNullable = NonNullable<INonNullable>;
/*
type TNonNullable = string;
*/

13.Parameters

type Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P : never;
//推算函数中所有参数的类型
type ParametersObj = {name: string;age: number;
}
const ParametersFunc = (a: string,b: ParametersObj) => {console.log(a, b);
}
type ParametersParams = Parameters<typeof ParametersFunc>;
/*
type ParametersParams = [a: string,b: ParametersObj];
*/

14.Uppercase

type IUppercase = Uppercase<'abc'>;
//全部转成大写

15.Lowercase

type ILowercase = Lowercase<'ABC'>;
//全部转成小写

16.Capitalize

type ICapitalize = Capitalize<'abc'>;
//首字母大写

17.Uncapitalize

type IUncapitalize = Uncapitalize<'ABC'>;
//首字母小写

typescript常用的一些内置类型相关推荐

  1. python编程语言继承_如何使用Python继承机制(子类化内置类型)

    我们知道,Python 中内置有一个 object 类,它是所有内置类型的共同祖先,也是所有没有显式指定父类的类(包括用户自定义的)的共同祖先.因此在实际编程过程中,如果想实现与某个内置类型具有类似行 ...

  2. golang内置类型和函数

    2019独角兽企业重金招聘Python工程师标准>>> /* 内置类型 值类型: bool int(32 or 64), int8, int16, int32, int64 uint ...

  3. python中整数类型的表示需加引导符号_Python内置类型及常见问题

    python的内置数据类型非常丰富,大致可以分为五类:None.数字类型.序列类型.映射类型和集合类型.下面我将分别对他们进行介绍,做个总结以备以后查看.下面的表列出了各个类别下的具体数据类型.*注: ...

  4. golang内置类型

    内置类型 值类型: bool int(32 or 64), int8, int16, int32, int64 uint(32 or 64), uint8(byte), uint16, uint32, ...

  5. python内置类型方法_python基础(一)内置类型及方法

    python 内置类型主要包含7大类: 数字 序列 映射 文件 类 实例 异常 其中,最常用数据类型为序列 序列 python中包含7种内建序列 列表(list):由方括号构成,用逗号分隔项目: [a ...

  6. python集合中的元素不能是哪些数据类型_Python内置类型及常见问题

    python的内置数据类型非常丰富,大致可以分为五类:None.数字类型.序列类型.映射类型和集合类型.下面我将分别对他们进行介绍,做个总结以备以后查看.下面的表列出了各个类别下的具体数据类型.*注: ...

  7. Flutter学习之Dart语言基础(内置类型)

    Dart支持以下内置类型: numbers strings booleans lists (也称为数组) sets maps runes (用于在字符串中表示Unicode字符) symbols Nu ...

  8. Windows PowerShell 2.0语言的内置类型系统

    PowerShell不仅允许用户操作各种类型的对象,而且可以通过统一方式来修改这些类型.当然也包括内置类型,这样可以更贴近日常工作中用到的对象类型.PowerShell的类型在很大程度上依靠.NET框 ...

  9. 杂记:三、mybatis中常见 Java 类型的内置类型别名

    杂记:三.mybatis中常见 Java 类型的内置类型别名 杂记:三.mybatis中常见 Java 类型的内置类型别名 一.mybatis 二.类型别名 杂记:三.mybatis中常见 Java ...

最新文章

  1. 吴恩达的二八定律:80%的数据+20%的模型=更好的机器学习
  2. 错误:Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp;的解决
  3. redis哨兵集群的搭建
  4. 安装 | Android studio连接不上真机解决办法(电脑安装虚拟机不成功的情况下)
  5. oracle 查看任务数量,关于dbms_scheduler创建任务数量的疑问
  6. Spring和石英:多作业计划服务
  7. Java手写线程池(不带返回值、带返回值)
  8. svn add后的数据如何取消-svn revert??--zz
  9. [渝粤教育] 长沙航空职业技术学院 信息技术 参考 资料
  10. ./config/config_global.php,直接git config和带--global、--system的区别
  11. 开启密钥轮换(仅适用由密钥管理服务生成的密钥)
  12. 情人节程序员用HTML网页表白【新婚快乐】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  13. CODE VS 4939 欧拉函数 质因数启发式分解
  14. 关于Python中rank()函数的理解
  15. 【Python】一篇文章学习Pandas包 Pandas Series、DataFrame 对比学习
  16. c语言运算符 amp 的意思,C语言运算符是什么意思
  17. confluence 制作流程图_超好用的流程图绘图工具你还没get吗?
  18. 如何分割cue+ape、cue+flac、cue+wav、cue+dts整轨音乐文件
  19. 人工智能的历史与演变
  20. 普元软件EOS荣膺2008最受欢迎SOA产品

热门文章

  1. 32位XP开启直接支持4g内存
  2. 男程序员写代码的样子 VS 女程序员写代码的样子
  3. Java课程设计-仓库管理系统
  4. CCMP之播放列表(高仿千千静听)
  5. 二维离散余弦变换(DCT)与二维离散反余弦变换(IDCT)C语言实现
  6. 优雅华美 简约奢华 轻奢风
  7. matlab中ga函数的用法,MATLAB中自带遗传算法函数GA的用法
  8. python输出玫瑰花
  9. RPC 就好像是谈一场异地恋
  10. 从飞信,超信看中国通讯行业的不作为