一、Record(记录)
将对象属性的值转化为T类型,用Record<K extends keyof any, T>
type Property = "user1" | "user2";
type User = Record<Property, string>;
const u: User = {
user1: "张三",
user2: "李四",
};
二、Readonly
将数组或对象的属性值转化为只读的
interface User2 {
name: string;
age: number;
gender?: "male" | "female";
}
let u2: Readonly<User2> = {
name: "王五",
age: 10,
gender: "male",
};
// u2.age = 30 此处会报错
三、Required(需要)
将类型的所有属性变成必选
interface User3 {
name?: string;
age?: number;
gender?: "male" | "female";
}
const u3: Required<User3> = {
name: "王五",
age: 10,
gender: "male",
};
四、Partial(部分的)
将类型的所有属性转化为可选属性
interface User4 {
name: string;
age: number;
}
const u4: Partial<User4> = {
name: "李四",
};
五、Extract(提取)
提取联合类型中某些类型,用Extract<T,U>,表示从T中提取出U
type User5 = Extract<string | number | (() => void), Function>; // ()=>void
const u5: User5 = () => {};
六、Exclude(排除)
移除联合类型中某些类型,用Exclude<T,U>,表示从T中移除U
type User6 = Exclude<string | number | (() => void), Function>;
const u6: User6 = 123;
七、Pick(挑选)
从类型中挑选出一些属性
type User7 = {
name: string;
age: number;
gender: string;
};
type U7 = Pick<User7, "name" | "age">;
const user: U7 = {
name: "张三",
age: 20,
};
八、Omit(删去)
从类型中移除一些属性,Omit<T,K> 从T中取出 除去K的其他所有属性
interface User8 {
name: string;
age: number;
gender: string;
}
type U8 = Omit<User8, "age" | "gender">;
const u8: U8 = {
name: "张三",
};
九、NonNullable(不可空)
去除类型中的null和undefined
type U9 = NonNullable<string[] | null | undefined>; //string[]
十、Parameters
获取函数的参数类型所组成的元组类型
type U10 = Parameters<(a: number, b: string) => void>; // [number,string]
十一、ReturnType
获取函数的返回值类型
type Func = (value: string) => string;
const u11: ReturnType<Func> = "1";