如何从window元素调用TypeScript静态方法?

时间:2016-06-04 18:55:46

标签: javascript typescript

我将我们的一些应用程序从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。

我确定这是一个非常简单的问题,但我无法弄明白。 谢谢,马特

1 个答案:

答案 0 :(得分:1)

您已在课堂上将Process拼写为Processs