javascript - 如何从窗口元素调用 TypeScript 静态方法?

标签 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"] 返回未定义。

window["Itemselector.preProcessData"] 也返回未定义。

我确信这是一个非常简单的问题,但我就是无法弄清楚。 谢谢,马特

最佳答案

您已在类中将 Process 拼写为 Processs

关于javascript - 如何从窗口元素调用 TypeScript 静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37633868/

相关文章:

javascript - 测试异步useEffect

javascript - 为什么我的数据表没有在函数内部使用 $.each 出现?

javascript - Adonis JS v5 关系缺少模型属性

javascript - 自定义 HttpInterceptor - 如何返回无法解析的 Observable?

javascript - 为什么滚动时我的粘性导航栏的高度消失了?

javascript - 窗口最小化时的 AudioContext 计时问题

javascript - 应该在 Controller 上定义关闭 Action

typescript - 通过 TS 定义嵌套属性

Typescript 0.9.5 使用移动函数扩展数组原型(prototype)

javascript - React - 从数组中删除项目而不是重新渲染列表