TypeScript:根据用途控制键的可选标志

我定义了一个具有6个属性的接口。我希望这些属性之一在一个工作流程中是必需的,而在另一工作流程中是可选的。我试图按照以下代码片段的方式定义类型。这类似于散布对象的所有属性,并在散布操作后进行一些更改。

type Entity<T,Keys extends keyof T> = {
  [P in keyof T]?: T[P];
  [S in Keys]: T[S];
}; 

但是,这没有完成任务。有办法吗?

zhangqiangwen88 回答:TypeScript:根据用途控制键的可选标志

我想有几种解决方案。其中之一是:

type Optional<T,OptionalKeys extends keyof T> =
    { [P in OptionalKeys]?: T[P] } & Omit<T,OptionalKeys>; 

我们在这里定义OptionalKeys,并从必填部分中省略它们。

Playground

本文链接:https://www.f2er.com/3154473.html

大家都在问