在Javascript中,您可以动态创建一个函数,如下所示:
const func = new Function(['arg'], 'console.log(arg)');
以便可以使用给定的参数func('Hello')
进行调用。但是,在Typescript中,Function
构造函数似乎只接受一个参数,即函数体。有没有办法为动态生成的函数提供形式参数?
(安全说明:该代码来自可信赖的来源,并且其中所包含的内容经验证非常有限。)
答案 0 :(得分:4)
Function
构造函数采用可变数量的字符串,就像打字稿定义状态一样,最后一个是函数体:
new Function ([arg1[, arg2[, ...argN]],] functionBody)
这是根据docs
浏览器实现可能更宽松,但打字稿必须遵守规范。
最简单的解决方案是按预期方式调用函数:
const func = new Function('arg', 'console.log(arg)');
或者如果您已经具有参数数组:
const func = new Function(...['arg'].concat('console.log(arg)'));
答案 1 :(得分:0)
不要使用Function构造函数创建新函数,只需将函数分配给变量,如下所示:
const func = function(arg) {
console.log(arg);
}
以这种方式分配函数称为函数表达式,在JavaScript中得到广泛使用。通过这种方式分配它,您可以根据需要添加任意多个参数。
const func = function(arg1, arg2, arg3) {
console.log(arg1);
console.log(arg2);
console.log(arg3);
}