微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有一个类,它实现了一个具有许多布尔属性的接口。实现这个接口的其他类的工作方式不同,但是这个类对每个属性都有一个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 举报,一经查实,本站将立刻删除。