我有一个这样的枚举(稍大一点):
export enum MyTypeEnum {
one = 'one',
two = 'two',
three = 'three',
four = 'four'
}
我用它来定义需要这种键的类型:
export type MyTypeKeyFunctionValue = { [key in MyTypeEnum ]?: Function };
export type MyTypeKeyStringValue = { [key in MyTypeEnum ]?: string };
所以在我的课堂上,我可以做类似的事情:
private memberWithFunctions: MyTypeKeyFunctionValue;
现在,当某些成员需要将所有键都放在MyTypeEnum
中(让我说two
)而我不知道如何定义排除该键的类型时,我的情况特别特殊但保留所有其他键。
有没有办法做到这一点?
答案 0 :(得分:1)
您可以只使用Exclude
条件类型从enum
中删除成员
export type MyTypeKeyStringValue = {
[key in Exclude<MyTypeEnum, MyTypeEnum.two> ]?: string
};
答案 1 :(得分:0)
使用Omit
类型跳过属性。
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
用法:
const foo: Omit<MyTypeKeyFunctionValue, MyTypeEnum.two> = {
/* ... */
}