ts
ts内置类型
具体类型
partial
作用
partial 构造一个类型 使t里的所有属性都设置可选
实现
type partial<t> = { [p in keyof t]?: t[p] | undefined; }
使用
interface exp1 {
name: string;
age:number;
}
type partialexp1 = partial<exp1>
partialexp1 的类型
type partialexp1 = {
name?: string | undefined;
age?: number | undefined;
}
required
作用
required 使t 所有属性都设为required 与partial相反
实现
type required<t> = { [p in keyof t]-?: t[p]; }
使用
interface exp2 {
name?:string;
age:number;
}
type requireexp2 = required<exp2>
requireexp2的类型为:
type requireexp2 = {
name: string;
age: number;
}
readonly
作用
readonly 将type中所有属性设置为只读
实现
type readonly<t> = { readonly [p in keyof t]: t[p]; }
使用
interface exp3 {
name:string;
age:number;
}
type readonlyexp3 = readonly<exp3>;
readonlyexp3:
type readonlyexp3 = {
readonly name: string;
readonly age: number;
}
record
作用
record<keys,t> 构造一个类型 属性键为keys 属性名位t 。可以用来规定对象的属性 名 以及值的类型
实现
type record<k extends string | number | symbol, t> = { [p in k]: t; }
使用
type exp4 = 'a'|'b'|'c'
type recordexp4 = record<exp4,number>
interface exp5{
title:string;
}
type recordexp5= record<exp4,exp5>
使用后类型为:
type recordexp4 = {
a: number;
b: number;
c: number;
}
type recordexp5 = {
a: exp5;
b: exp5;
c: exp5;
}
pick
作用
pick<type, keys> 从type中选出一组keys来构造一个类型
实现
type pick<t, k extends keyof t> = { [p in k]: t[p]; }
使用
interface exp6 {
title:string;
age:number;
sex:number
}
type pickexp6 = pick<exp6,'title'|'age'>
结果为:
type pickexp6 = {
title: string;
age: number;
}
omit
作用
omit<type, keys> 从type中删除所有keys 来构造一个类型 与pick相反
实现
type omit<t, k extends string | number | symbol> = { [p in exclude<keyof t, k>]: t[p]; }
使用
interface exp7 {
title: string;
age:number;
sex:number
}
type omitexp7 = omit<exp7,'title'>
结果为:
type omitexp7 = {
age: number;
sex: number;
}
exclude
作用
exclude<t,u> 从t中排除可分配给u的的类型,返回联合类型
实现
type exclude<t, u> = t extends u ? never : t
使用
type exp8 = 'title' | 'age' | 'sex';
type exp9 = 'title'|'age';
type exclude8 = exclude<exp8,exp9>
结果为
type exclude8 = "sex"
extract
作用
extract<t,u> 从t中提取可以分配给u的属性构造成一个新的联合类型 和exclude相反
实现
type extract<t, u> = t extends u ? t : never
使用
type exp10 = 'title' | 'age' | 'sex';
type exp11 = 'title'|'age';
type extractexp10 = extract<exp10,exp11>
结果为
type extractexp10 = "title" | "age"
nonnullable
作用
nonnullable 从 t中排除 null 和 underfined 来构造一个类型
实现
type nonnullable<t> = t & {}
使用
type exp12 = string|null|number|undefined;
type nonnullableexp12 = nonnullable<exp12>
结果为
type nonnullableexp12 = string | number
发表评论