Typescript学习: Partial 与 Required

两个常用的工具
更新于: 2023-05-12 10:41:49

基本理解

optional: 将所有的属性变成可选(没有 Optional 这个工具)

required: 将所有的属生变成 Required 字段

原理 - partial

interface Person {
    name: string;
    age: number;
    sex?: string;
}
type PersonOptions = MyPartial<Person>;

// 实现原理
type MyPartial<T> = {
    [P in keyof T]?: T[P]
}

原理 - required

注意这个用法 [P in keyof T]-?: T[P]

interface Person {
    name: string;
    age: number;
    sex?: string;
}
type PersonOptions = MyRequired<Person>;

// 实现原理
type MyRequired<T> = {
  [P in keyof T]-?: T[P];
};

// 取得 name 的类型
type NameType = Person['name']; // string

参考