在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
记录一下typescript中一些类型高级用法: 首先声明一个类型IUser: interface IUser {
name: string;
age?: number;
class?: string;
sex: string;
}
1、keyof:作用是获取键 type keys = keyof IUser; 2、Pick:从类型定义的属性中,选取指定一组属性,返回一个新的类型定义。 源码: type Pick<T, K extends keyof T> = {[P in K]: T[P]}; 例子: type IPG = Pick<IUser, 'name'> let gg: IPG = { name: '5' } 3、Record:以 typeof 格式快速创建一个类型,此类型包含一组指定的属性且都是必填。 源码: type Record<K extends keyof any, T> = {[P in K]: T}; 例子: type IRH = Record<keyof IUser, string> let hh: IRH = { name: '6', age: '6', class: '6', sex: '0' } 4、Partial: 将传入的属性变为可选项 源码: type Partial<T> = { [p in keyof T]?: T[p] }; 例子: type IPB = Partial<IUser>; let bb: IPB = { name: '1', age: 1 } 5、Required:将传入的属性变为必选项 源码: type Required<T> = { [P in keyof T]-?: T[P] }; 例子: type IRC = Required<IUser>; let cc: IRC = { name: '2', age: 2, class: '2', sex: '0' } 6、Exclude :的作用是两个参数对比过滤出前面参数独有的。 源码: type Exclude<T, U> = T extends U ? never : T; 例子: type IED = '1' | '2' | '3'; type IEE = '4'; let dd: Exclude<IED, IEE> = '1' 7、Omit :的作用是将前面参数中后面的属性过滤掉 源码: type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>; 例子: type IOF = Omit<IUser, 'sex'> let ff: IOF = { name: '4', age: 4, class: '4', }
|
请发表评论