Partial<T>
Partial的作用是所有一个类型的所有参数变成可选
interface student ={
age:number,
name:string
}
type sutdentTransfer=Partial<student>
type sutdentTransfer={
age?:number|undefined,
name?:string|undefined
}
实现源码
type Partial<T> = { [P in keyof T]?: T[P]; };
Required<T>
Required<T>
工具类型 用于把所有属性变成必填
type PartialStudent=Required<Partial<student>>
//实现源码 通过 ‘-?’ 移除可选操作使得属性从可选变为必选的
type Required<T> = {
[P in keyof T]-?: T[P];
};
??和||的区别?
??判断左侧返回值为undefine /null ,||判断左侧逻辑返回true
Exclude<T,u> (排除)
从类型T中提取除 u外可分配给U的类型
eg:
interface User {
name: string;
sex: string;
age: number;
}
type NewType = Exclude<keyof User, 'name' | 'sex'>;
re:
type NewType = "age"
Extract<T, U> (提取)
从类型T,提取可分配给U的类型
eg:
interface User {
name: string;
sex: string;
age: number;
}
type NewType = Extract<keyof User, 'name' | 'sex'>;
re:
type NewType = "name"|'sex'
Omit<T, K> 和Pick<T,k>
Omit构造一个类型,从t中提取 除K包含的属性外的所有属性
eg:
interface User {
name: string;
sex: string;
age: number;
}
type NewType = Omit<User, 'name' | 'sex'>;
re:
type NewType = {
age:number
}
Pick<T,k>构造一个类型,从t中提取 包含k在内的所有属性
eg:
interface User {
name: string;
sex: string;
age: number;
}
type NewType = Pick<User, 'name' | 'sex'>;
re:
type NewType = {
name: string;
sex: string;
}
Record<T,K>
从K中选出类型为T的全部属性
eg:
interface User {
name: string;
sex: string;
age: number;
}
type NewType = Record<string, User>;
re:
type NewType = {
name: string;
sex: string;
}
NonNullable 去除null,undefined
eg:
type name=string|null|undefined
let newType=NonNullable (name)
re:
newType=string
Parameters获取函数类型的参数,返回元组
eg:
interface User {
name: string;
sex: string;
age: number;
getFamily: (name: string) => User[];
}
type NewType = Parameters<User['getFamily']>;
re:
type NewType = [name: string]