首页 > 解决方案 > 在 Typescript 上使用函数映射字符串

问题描述

是否可以使用 TS 将字符串映射到函数。例如 :

this.keyBinding = new Map<string, Function>();
    this.keyBinding
        .set('Backspace', this.handleBackspace)
        .set('Delete', this.handleDelete)

我尝试使用以下方法执行它:

this.keyBinding.get('Backspace');

但什么也没发生。

标签: javascripttypescriptmapping

解决方案


.get返回一个函数,因此如果要运行该函数,则必须调用它:

this.keyBinding.get('Backspace')();

如果传入的字符串可能在 Map 中不存在,请先检查它是否存在:

const fn = this.keyBinding.get('Backspace');
if (fn) fn();

如果handleBackspaceandhandleDelete方法依赖于this上下文,那么您还需要考虑这一点:

this.keyBinding
        .set('Backspace', () => this.handleBackspace())
        .set('Delete', () => this.handleDelete());

推荐阅读