From a88ad1ba901b0f1feeb974b260c285cca83d76f6 Mon Sep 17 00:00:00 2001 From: zhongsp Date: Wed, 10 Jul 2019 13:29:28 +0800 Subject: [PATCH] Add `Omit` which was introduced in TypeScript 3.5 pr1065 --- doc/handbook/Advanced Types.md | 2 +- doc/handbook/Utility Types.md | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/doc/handbook/Advanced Types.md b/doc/handbook/Advanced Types.md index 195a850..144bc0c 100644 --- a/doc/handbook/Advanced Types.md +++ b/doc/handbook/Advanced Types.md @@ -1218,4 +1218,4 @@ type T23 = InstanceType; // Error type T24 = InstanceType; // Error ``` -> 注意:`Exclude`类型是[建议的](https://github.com/Microsoft/TypeScript/issues/12215#issuecomment-307871458)`Diff`类型的一种实现。我们使用`Exclude`这个名字是为了避免破坏已经定义了`Diff`的代码,并且我们感觉这个名字能更好地表达类型的语义。我们没有增加`Omit`类型,因为它可以很容易的用`Pick>`来表示。 +> 注意:`Exclude`类型是[建议的](https://github.com/Microsoft/TypeScript/issues/12215#issuecomment-307871458)`Diff`类型的一种实现。我们使用`Exclude`这个名字是为了避免破坏已经定义了`Diff`的代码,并且我们感觉这个名字能更好地表达类型的语义。 diff --git a/doc/handbook/Utility Types.md b/doc/handbook/Utility Types.md index 7ab9e2f..90caa36 100644 --- a/doc/handbook/Utility Types.md +++ b/doc/handbook/Utility Types.md @@ -8,6 +8,7 @@ TypeScript提供一些工具类型来帮助常见的类型转换。这些类型 * [`Readonly`,TypeScript 2.1](#readonlyt) * [`Record`,TypeScript 2.1](#recordkt) * [`Pick`,TypeScript 2.1](#picktk) +* [`Omit`](#omittk) * [`Exclude`,TypeScript 2.8](#excludetu) * [`Extract`,TypeScript 2.8](#extracttu) * [`NonNullable`,TypeScript 2.8](#nonnullablet) @@ -109,6 +110,27 @@ const todo: TodoPreview = { }; ``` +## `Omit` + +从类型`T`中获取所有属性,然后从中剔除`K`属性后构造一个类型。 + +### 例子 + +```ts +interface Todo { + title: string; + description: string; + completed: boolean; +} + +type TodoPreview = Omit; + +const todo: TodoPreview = { + title: 'Clean room', + completed: false, +}; +``` + ## `Exclude` 从类型`T`中剔除所有可以赋值给`U`的属性,然后构造一个类型。