我将我们的一些应用程序从JavaScript转换为TypeScript,并且有一个JavaScript方法,通过函数名称通过window元素执行函数。
我们无法从TypeScript生成的JavaScript中找到并执行正确的函数。
TypeScript代码:
class ItemSelector {
public static preProcesssData(data: any): any {
//Do Stuff
return data;
}}
制作JavaScript
var ItemSelector = (function () {
function ItemSelector() {
}
ItemSelector.preProcesssData = function (data) {
//Do Stuff
return data;
};
return ItemSelector;}());
JavaScript调用函数
function callFunctionByName(funcName,data) {
var fn = null;
/*
* If function has a scope (namespace) like this: "myScope.myFunction"
*/
if (funcName.indexOf(".") != -1) {
var ns = funcName.split(".");
if (ns && ns.length == 2) {
fn = window[ns[0]][ns[1]];
} else {
cl("Function with multiple scopes not supported: " + funcName);
}
}
/*
* Else function is just a plain string with no scope.
*/
else {
fn = window[funcName];
}
//fn is always undefined
if (typeof fn === "function") { fn(data);}}
示例呼叫
callFunctionByName("ItemSelector.preProcessData",{});
window [" ItemSelector"] [" preProcessData"]返回undefined。
window [" Itemselector.preProcessData"]也返回undefined。
我确定这是一个非常简单的问题,但我无法弄明白。 谢谢,马特
答案 0 :(得分:1)
您已在课堂上将Process
拼写为Processs
。