如何以编程方式在打字稿对象上生成属性

问题描述

我有一个类,它实现了一个具有许多布尔属性的接口。实现这个接口的其他类的工作方式不同,但是这个类对每个属性都有一个getter,每个getter都非常相似,感觉应该是自动生成的。

目前,如果我向接口添加一个属性,则必须手动添加一个 getter。有没有一种方法可以构造我的类,这样我就不必每次向它实现的接口添加属性时都手动创建一个新的 getter(或者,至少减少要编写的代码量)。

一个我要解决的问题的具体例子:

我正在编写基于浏览器的游戏,并希望同时支持键盘和游戏手柄输入。在浏览器中,键盘输入是基于事件的,但你必须轮询游戏手柄才能找到它的状态,所以我有一个界面来处理玩家可以做的所有不同的事情:

interface InputState {
    jump: boolean
    attack: boolean
    // ...
}

然后我有一个类为键盘输入实现这个,它具有所有属性并设置事件处理程序以在键盘事件上打开和关闭它们,还有一个游戏手柄实现,它具有检查状态的所有属性的getter一个游戏手柄。

我有第三个类,它结合了其他类的实例的状态。它有如下所示的吸气剂:

get jump() {
    return this.key.jump || this.gamepad.jump
}

get attack() {
    return this.key.attack || this.gamepad.attack
}

看到六个只有一个名称不同的功能已经让我感到难过,而每当我添加一种新的交互方式时添加一个功能让我更难过。

有没有办法编写这个组合类,这样我就不必为每个属性手动添加一个 getter?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)