我正在尝试派生一个类,将一个在基类中被定义为必需的字段设置为可选。
例如:
class Base {
param1! : string;
param2! : string;
}
class Derived extends Omit<Base, "param1">{
}
这会导致错误ts(2693):
'Omit'仅适用于类型,但它在这里被用作值。
如果这是一个XY问题,我的真正解决方案是:
- 我生成的类在每次构建时都会被重新生成(因此我无法手动修改它们,或者在生成时进行一些修改)
- 生成的类将所有属性定义为必需的(类似于上面的Base)。
- 我需要向某些生成的方法和属性添加装饰器。
- 我需要允许Base类的Partial实例。(理想情况下只添加一次装饰器)。
理想情况下,我想使用Required
、Omit
、Pick
、Partial
来扩展Base类,以便派生出多个省略/要求正确属性的类。
我已经几乎放弃了所有这些脚手架/模板代码,想要手动编写模型/SQL/REST。
(我对TypeScript还很新)
implements
而不是extends
。因为extends
用于扩展类,因此 TS 需要一个值,而你正在尝试使用Omit
。请参见示例。 - captain-yossarian from UkrainePick, Partial, Required, Omit
总是“返回”接口,无论给定的是类还是接口?如果您将其发布为答案,我会接受,因为它涵盖了问题的主要问题。但是,虽然装饰器的效果在派生类中仍然存在,但它们不会被“重新计算/重新应用”(即装饰器对可选类型和必需类型应该具有不同的影响)。有没有办法解决这个问题?我应该从问题中删除它并打开一个新问题吗?谢谢! - GCon