TypeScript 工具类型学习

45 阅读1分钟

Partial

Partial<T> 把类型 T 的所有属性改成可选属性

interface User {
    id: number;
    firstName: string;
    lastName: string;
}

type PartialUser = Partial<User>

等价于
type PartialUser = { 
    id?: number;  
    firstName?: string;  
    lastName?: string;  
}

Required

Required<T> 把类型 T 中的参数全部变成必选项

interface User {
    id?: number;
    firstName?: string;
    lastName?: string;
}

type RequiredUser = Partial<User>

等价于
type RequiredUser = { 
    id: number;  
    firstName: string;  
    lastName: string;  
}

Pick

Pick<T, K> 从类型 T 中提取 K 属性,构造新类型。适用于需要限制和缩小类型范围的场景

example

interface User {
    id: number;
    firstName: string;
    lastName: string;
}

type PickUser = Pick<User, "firstName" | "lastName">

等价于
type PickUser = {
    firstName: string;
    lastName: string;
}

Omit

Omit<T, K> 从类型 T 中移除指定的属性 K,适合需要保留大部分属性的场景。 K 可以是单个属性,也可以是多个属性名组成的联合类型

interface User {
    id: number;
    firstName: string;
    lastName: string;
    age: number;
    height: number;
    weight: number;
    sex: string;
}

type OmitUser = Omit<User, "id">

等价于
type OmitUser = {
    firstName: string;
    lastName: string;
    age: number;
    height: number;
    weight: number;
    sex: string;

}

Record

Record<K, T> 创建一个对象类型,键为 K, 值为 T。

interface User {
    id: number;
    name: string;
}

type RecordUser = ReCord<string, User>

等价于
type RecordUser = {
    [key: string]: User
}