typescript中的Partial和Omit

Partial

构造一个类型,将Type的所有属性设置为可选。该实用程序将返回一个表示给定类型的所有子集的类型。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
interface Todo {
title: string;
description: string;
}

// 用partial将接口Todo所有属性变成可选
function updateTodo(todo: Todo, fieldsToUpdate: Partial<Todo>) {
return { ...todo, ...fieldsToUpdate };
}

const todo1 = {
title: "organize desk",
description: "clear clutter",
};

// 虽然第二个参数没有给声明title属性,但不报错
const todo2 = updateTodo(todo1, {
description: "throw out trash",
});

Omit<Type, Keys>

通过从Type中选取所有属性,然后删除属性Keys来构造一个类型。

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
interface Todo {
title: string;
description: string;
completed: boolean;
}

// 类型TodoPreview等于接口Todo移除descprition属性的接口
type TodoPreview = Omit<Todo, "description">;

const todo: TodoPreview = {
title: "Clean room",
completed: false,
};