首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据输入数据使用括号表示法

根据输入数据使用括号表示法
EN

Stack Overflow用户
提问于 2019-06-05 08:40:39
回答 2查看 83关注 0票数 1

我正在优化我的库中的一些代码,然而,当我试图调用一个导入的类时,我有一个关于为什么括号表示法不起作用的问题。

参数type接受camelCased类型的字符串,例如:myString。参数data可以是任何值。

代码语言:javascript
复制
import { foo } from './example';

export const find = (type: string, data: any) => {

// This next line effectively deletes the end of the string starting
// from the first capital letter.
    const f = type.replace(/[A-Z][a-z]+/, '');
    try {
        return [f][type](data);
    } catch (e) {
        return e;
    }
};

这就是我希望它看起来是什么样子,如果我使用点符号可视化它:

代码语言:javascript
复制
foo.fooBar(someRandomData)

这应该调用导入的类foo上的静态方法fooBar(data),但是,我收到一条错误消息:

代码语言:javascript
复制
TypeError: [f][type] is not a function

如果我要将它恢复为我的if..else if样式,它可以工作:

代码语言:javascript
复制
if (type.startsWith('foo')) return foo[type](data);

如何在不收到定义的错误消息的情况下执行上面所需的操作?

提前感谢您的帮助!

编辑:这是我从已有代码中修改的一个示例,因此,我修复了一些拼写错误。

编辑#2:根据请求,导入的类foo如下所示:

代码语言:javascript
复制
export class foo{
static fooBar(data){
// Do stuff with data...
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56452929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档