我正在将一些应用程序从 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"] 返回未定义。
window["Itemselector.preProcessData"] 也返回未定义。
我确信这是一个非常简单的问题,但我就是无法弄清楚。 谢谢,马特
最佳答案
您已在类中将 Process
拼写为 Processs
。
关于javascript - 如何从窗口元素调用 TypeScript 静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37633868/