我仍然在寻找一个干净的方法来声明第二个类,它与第一个类具有相同的字段。我想这是不可能的,正如我在编译时看到的,我们不能有类字段。即使在运行时,具有Object.keys
的字段也只有在初始化后才可能。(将返回定义的值)。
案例:
class Entity {
public id!: string;
public uuid!: string;
public firstname!: string;
public lastname!: string;
}
现在我想添加weights
(可能对客户机代码进行了少量重构)。
从逻辑上讲,如果可能的话,我需要在同一个类上声明weights
,或者在第二个孪生类中声明weights
,如:
class EntityWeights {
public id!: number;
public uuid!: number;
public firstname!: number;
public lastname!: number;
}
然后我会密切关注这两个类,以获得一致的代码(不是最优的)。
如果我只改变Entity
来增加权重,我会这样做:
class Entity {
public id!: [string, number];
public uuid!: [string, number];
public firstname!: [string, number];
public lastname!: [string, number];
}
我尝试了这个方法,在客户端代码上,我将const entity = new Entity({___})
传递给其他代码,如putInDB(entity)
,我不能重构它,使其只有权重或值。
你会怎么做?
1条答案
按热度按时间e4yzc0pl1#
您可以使用
implements
来约束EntityWeights
,使其具有Record<keyof Entity, unknown>
的Entity
的 * 每个属性 *。每个属性都是必需的,但您可以自由选择它们的类型。缺少属性时将出现错误:
Playground