2

型注釈 (.d.ts ファイル) を既存の大規模な Javascript コード ベースに追加するプロジェクトに取り組んでいます。.d.ts ファイルは Javascript と一緒に存在しますが、このプロジェクトをサポートするために Javascript を変更することはできません。

既存のコードでは、次のようなものがあります。

...

window.MyGlobal.Service = function () {

}
window.MyGlobal.Service.prototype = {
   baseURL: 'http://...';
}

...

後で次のようなことをすることを期待して

var svc = new window.MyGlobal.Service();

これを TypeScript で表現する方法がわかりません。私は持っている

interface Service {
    baseURL: string;
}

しかし、MyGlobal のインターフェイスに何を入れればよいかわかりません。私はもう試した

interface MyGlobal { 
    Service: Service;
}

しかし、その上で new() を使用することはできません。に変更できます

interface MyGlobal {
    Service(): void;
}

これで、new(); を使用できるようになります。ただし、Service インターフェイスに関する型情報は失われます。

この状況を TypeScript で処理することは可能ですか?

4

1 に答える 1

1

オプション1:

declare module MyGlobal {
    class Service {
        baseURL: string;
    }   
}

interface Window {
    MyGlobal: { Service: MyGlobal.Service; }    
}

var svc = new window.MyGlobal.Service();
var x = svc.baseURL;

オプション 2:

declare module MyGlobal {
    interface Service {
        baseURL: string;
    }   
}

interface Window {
    MyGlobal: { Service: { new(): MyGlobal.Service } }  
}

var svc = new window.MyGlobal.Service();
var x = svc.baseURL;
于 2013-07-25T17:51:03.737 に答える