ts爬爬爬

367 阅读1分钟

高级方法

Record<[ObjectKey], [ObjectValue]>

image.png image.png

练习题地址: typescript-exercises.github.io/

  1. 类型定义
  2. Partial
  3. Omit
  4. 泛型使用
  5. 类型组合

第 4 题

interface User {
    type: 'user';
    name: string;
    age: number;
    occupation: string;
}

interface Admin {
    type: 'admin';
    name: string;
    age: number;
    role: string;
}

export type Person = User | Admin;

报错: occupation不是Admin里面的类型(Person 类型中 定义可以为 User或者Admin)

image.png

occupation只存在User类型中 Admin类型中没有
person is User 声明现在person已经是User类型

image.png

第 5 题

interface User {
    type: 'user';
    name: string;
    age: number;
    occupation: string;
}

interface Admin {
    type: 'admin';
    name: string;
    age: number;
    role: string;
}

export type Person = User | Admin;

报错:User类型 缺少属性type、name、occupation

image.png

Partial接口将将类型的所有属性设置为可选的类型

image.png

第 6 题

Omit 类型让我们可以从另一个对象类型中剔除某些属性,并创建一个新的对象类型

函数重载(重复声明更具不同的入参类型进入不同的函数块)

image.png

第 7 题

interface User {
    type: 'user';
    name: string;
    age: number;
    occupation: string;
}

interface Admin {
    type: 'admin';
    name: string;
    age: number;
    role: string;
}
const admins: Admin[] = [
    ...
];

const users: User[] = [
    ...
];

泛型 接收类型使用

image.png

第 8 题

类型组合

image.png