typescript常用的一些内置类型
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常用的一些内置类型相关推荐
- python编程语言继承_如何使用Python继承机制(子类化内置类型)
我们知道,Python 中内置有一个 object 类,它是所有内置类型的共同祖先,也是所有没有显式指定父类的类(包括用户自定义的)的共同祖先.因此在实际编程过程中,如果想实现与某个内置类型具有类似行 ...
- golang内置类型和函数
2019独角兽企业重金招聘Python工程师标准>>> /* 内置类型 值类型: bool int(32 or 64), int8, int16, int32, int64 uint ...
- python中整数类型的表示需加引导符号_Python内置类型及常见问题
python的内置数据类型非常丰富,大致可以分为五类:None.数字类型.序列类型.映射类型和集合类型.下面我将分别对他们进行介绍,做个总结以备以后查看.下面的表列出了各个类别下的具体数据类型.*注: ...
- golang内置类型
内置类型 值类型: bool int(32 or 64), int8, int16, int32, int64 uint(32 or 64), uint8(byte), uint16, uint32, ...
- python内置类型方法_python基础(一)内置类型及方法
python 内置类型主要包含7大类: 数字 序列 映射 文件 类 实例 异常 其中,最常用数据类型为序列 序列 python中包含7种内建序列 列表(list):由方括号构成,用逗号分隔项目: [a ...
- python集合中的元素不能是哪些数据类型_Python内置类型及常见问题
python的内置数据类型非常丰富,大致可以分为五类:None.数字类型.序列类型.映射类型和集合类型.下面我将分别对他们进行介绍,做个总结以备以后查看.下面的表列出了各个类别下的具体数据类型.*注: ...
- Flutter学习之Dart语言基础(内置类型)
Dart支持以下内置类型: numbers strings booleans lists (也称为数组) sets maps runes (用于在字符串中表示Unicode字符) symbols Nu ...
- Windows PowerShell 2.0语言的内置类型系统
PowerShell不仅允许用户操作各种类型的对象,而且可以通过统一方式来修改这些类型.当然也包括内置类型,这样可以更贴近日常工作中用到的对象类型.PowerShell的类型在很大程度上依靠.NET框 ...
- 杂记:三、mybatis中常见 Java 类型的内置类型别名
杂记:三.mybatis中常见 Java 类型的内置类型别名 杂记:三.mybatis中常见 Java 类型的内置类型别名 一.mybatis 二.类型别名 杂记:三.mybatis中常见 Java ...
最新文章
- 吴恩达的二八定律:80%的数据+20%的模型=更好的机器学习
- 错误:Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp;的解决
- redis哨兵集群的搭建
- 安装 | Android studio连接不上真机解决办法(电脑安装虚拟机不成功的情况下)
- oracle 查看任务数量,关于dbms_scheduler创建任务数量的疑问
- Spring和石英:多作业计划服务
- Java手写线程池(不带返回值、带返回值)
- svn add后的数据如何取消-svn revert??--zz
- [渝粤教育] 长沙航空职业技术学院 信息技术 参考 资料
- ./config/config_global.php,直接git config和带--global、--system的区别
- 开启密钥轮换(仅适用由密钥管理服务生成的密钥)
- 情人节程序员用HTML网页表白【新婚快乐】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
- CODE VS 4939 欧拉函数 质因数启发式分解
- 关于Python中rank()函数的理解
- 【Python】一篇文章学习Pandas包 Pandas Series、DataFrame 对比学习
- c语言运算符 amp 的意思,C语言运算符是什么意思
- confluence 制作流程图_超好用的流程图绘图工具你还没get吗?
- 如何分割cue+ape、cue+flac、cue+wav、cue+dts整轨音乐文件
- 人工智能的历史与演变
- 普元软件EOS荣膺2008最受欢迎SOA产品