Typescript是否通过排除其他界面的属性来支持提取的界面?

时间:2018-04-01 08:00:40

标签: typescript

我想知道它是否具有以下任何功能。我试过谷歌,但我无法找到它。谢谢!

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

const numbers:Numbers - { number3 } = {
    number: 1,
    number2: 2
};

1 个答案:

答案 0 :(得分:4)

您可以使用新的Exclude条件类型和Pick映射类型

在2.8中执行此操作
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
};

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>>;