我想知道是否有可能一次省略几个密钥,而不必指定所有密钥,以防它们已经从特定接口获知.

让我们假设我有以下接口:

interface A {
  a: number;
  b: number;
  c: number;
  d: number;
}

interface B extends A {
  e: string;
  f: string;
}

我希望有一个引用以下对象的类型:

const a: SomeType = {
  e: 'foo',
  f: 'bar',
};

我可以做这样的事情,但这将是非常多余的:

type OmitWithKeys = Omit<B, 'a' | 'b' | 'c' | 'd'> 

如果B有很多键,这个解决方案也会有同样的问题:

type BWithoutExtend = {
  e: string;
  f: string;
};

有什么诀窍可以做到这一点吗?

推荐答案

type BWithoutExtend = Omit<B, keyof A>;

enter image description here

Typescript相关问答推荐

Typescript如何从字符串中提取多个文本

了解TS类型参数列表中的分配

使用ngrok解析Angular 时出现HTTP故障

键集分页顺序/时间戳上的筛选器,精度不相同

在实现自定义主题后,Angular 不会更新视图

为什么我的一个合成函数不能推断类型?

如何从扩展接口推断泛型?

TypeScrip:从对象中提取和处理特定类型的键

返回嵌套props 的可变元组

如何在React组件中指定forwardRef是可选的?

使用泛型识别对象值类型

类型推断对React.ForwardRef()的引用参数无效

NPM使用Vite Reaction应用程序运行预览有效,但我无法将其部署到Netlify

类型实例化过深,可能是无限的&TypeScrip中的TupleUnion错误

如何将通用接口的键正确设置为接口的键

在Thunk中间件中输入额外参数时Redux工具包的打字脚本错误

VUE 3类型';字符串';不可分配给类型';参考<;字符串&>

可以用任意类型实例化,该类型可能与

从泛型对象数组构造映射类型

如何将元素推入对象中的类型化数组