我正在优化我的库中的一些代码,然而,当我试图调用一个导入的类时,我有一个关于为什么括号表示法不起作用的问题。
参数type
接受camelCased类型的字符串,例如:myString
。参数data
可以是任何值。
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;
}
};
这就是我希望它看起来是什么样子,如果我使用点符号可视化它:
foo.fooBar(someRandomData)
这应该调用导入的类foo
上的静态方法fooBar(data)
,但是,我收到一条错误消息:
TypeError: [f][type] is not a function
如果我要将它恢复为我的if..else if
样式,它可以工作:
if (type.startsWith('foo')) return foo[type](data);
如何在不收到定义的错误消息的情况下执行上面所需的操作?
提前感谢您的帮助!
编辑:这是我从已有代码中修改的一个示例,因此,我修复了一些拼写错误。
编辑#2:根据请求,导入的类foo
如下所示:
export class foo{
static fooBar(data){
// Do stuff with data...
}
https://stackoverflow.com/questions/56452929
复制相似问题