16

これはどこかで、ある時点で対処されたと思います。私の人生のためだけに、思い出せないので、ここに私の質問があります。

既存のアプリケーションに読み込まれるJavaScriptの作業を行っています。このアプリケーションには利用可能な機能がたくさんあり、実際に使用したいものを除いて、ほとんど知られていません。つまり、window.srslyUsefulFunctionが使用可能になり、これをtypescript定義に移植することについてはあまり気にしないという事実を知っているとしましょう。

だから問題は、自分のタイプスクリプトファイルで定義を作成せずに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 に答える