Typescript是否通过排除另一个接口的属性来支持提取的接口?

lef*_*ick 2 typescript

我想知道它是否具有以下任何功能。我尝试了Google,但找不到。谢谢!

interface Numbers {
    number: number;
    number2: number;
    number3: number;
}

const numbers:Numbers - { number3 } = {
    number: 1,
    number2: 2
};
Run Code Online (Sandbox Code Playgroud)

Tit*_*mir 5

编辑

从Typescript 3.5开始,Typescript Omit是预定义类型的一部分。

原始答案

您可以在2.8中使用新的Exclude条件类型和Pick映射类型来执行此操作

type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; 

interface Numbers {
    number: number;
    number2: number;
    number3: number;
}

const numbers:Omit<Numbers, 'number3'> = {
    number: 1,
    number2: 2
};
Run Code Online (Sandbox Code Playgroud)

在2.8之前Omit可以这样定义:

type Diff<T extends string, U extends string> = ({[P in T]: P } & {[P in U]: never } & { [x: string]: never })[T];  
type Omit<T, K extends keyof T> = Pick<T, Diff<keyof T, K>>; 
Run Code Online (Sandbox Code Playgroud)