16

我认为这已经在某个地方解决了,在某个时候,只是为了我的生活,我不记得了,所以这是我的问题:

我正在做一些将加载到现有应用程序中的 javascript 工作。这个应用程序有很多可用的功能,除了我想实际使用的一些功能外,我几乎不知道任何功能。因此,可以说我知道 window.srslyUsefulFunction 对我可用,我不太关心将其移植到打字稿定义中。

所以问题是如何在我自己的打字稿文件中使用 window.srslyUsefulFunction 而不为它创建定义?

例子:

class MyClass {
    public MyMethod (id : string) : void {
        // do something 
        var result = window.srslyUsefulFunction(id);
        // do something (with the result)
    }
}
4

3 回答 3

18

您可以将该函数添加到Window界面中,然后在您的 TypeScript 程序中使用它:

interface Window {
    srslyUsefulFunction(id: number): void;
}

class MyClass {
    doSomething() {
        window.srslyUsefulFunction(1);
    }
}
于 2013-01-02T09:50:26.123 回答
5

我有简单的解决方法。

在 index.html 中

function playIntro() {
        intro = new lib.intro();
        onlinePlayer.contentContainer.addChild(intro);
        stage.update();
    }

在我的 Main.ts 中,我这样称呼它:

private onClick(event): void {

        if (window.hasOwnProperty('playIntro')) {
            window['playIntro'].call();
        }
    }

所以......如果你想从全局范围调用“盲”js函数,只需使用 window["foo"].call();

于 2013-06-12T12:16:57.063 回答
1

检查函数是否存在。如果没有,请声明:

if(!window.hasOwnProperty('srslyUsefulFunction')
 || typeof window['srslyUsefulFunction'] !== "function"){
    window['srslyUsefulFunction'] = function(){
        console.log("You're only running a dummy implementation of srslyUsefulFunction here!");
    };
}
于 2013-01-02T09:50:37.683 回答