javascript - 在 Typescript 上使用函数映射字符串
问题描述
是否可以使用 TS 将字符串映射到函数。例如 :
this.keyBinding = new Map<string, Function>();
this.keyBinding
.set('Backspace', this.handleBackspace)
.set('Delete', this.handleDelete)
我尝试使用以下方法执行它:
this.keyBinding.get('Backspace');
但什么也没发生。
解决方案
将.get
返回一个函数,因此如果要运行该函数,则必须调用它:
this.keyBinding.get('Backspace')();
如果传入的字符串可能在 Map 中不存在,请先检查它是否存在:
const fn = this.keyBinding.get('Backspace');
if (fn) fn();
如果handleBackspace
andhandleDelete
方法依赖于this
上下文,那么您还需要考虑这一点:
this.keyBinding
.set('Backspace', () => this.handleBackspace())
.set('Delete', () => this.handleDelete());
推荐阅读
- python - 带有 gunicorn 的 Docker 中的 Flask 应用程序
- css - codename1 项目选项卡组件,我的 codename1 项目从任何地方改变行为
- animation - 后效:如何使文本跟随条形图中动画条的顶部
- ios - 在 Swift 包管理器中找不到“framework/header1.h”文件
- php - Laravel 分页方法不适用于变换方法
- reactjs - 永久解决无法在这个大工作区中监视文件更改
- python - Hosting single project in different server
- bash - 不是有效的标识符 - Apache Maven
- django - 在 django 网站的自动部署期间将调试模式设置为 false
- docker - How can I retrieve my host machines IP address from inside a docker compose file?