4

現在、OpenLayers の TypeScript 定義ファイルを作成しようとしています。

問題は、OpenLayers には、TypeScript のモジュールとクラスの両方に変換される特定のクラスがあることです。

たとえばProtocol、モジュールにクラスOpenLayersがあり、モジュールにクラスがありResponseますOpenLayers.Protocol

TypeScriptでそれをどのようにモデル化できますか? クラスを作成し、そのクラスをエクスポートされる内部クラスとしてProtocol定義できますか? Responseその問題をどのように解決しますか?

4

2 に答える 2

1

クラスを定義する を返し、コンストラクター型の のフィールドResponseとして宣言します。staticProtocolinterfaceResponse

declare module OpenLayers {
    export interface IProtocolResponse {
        foo(): void;
    }

    export class Protocol {
        static Response: new () => IProtocolResponse;
    }
}

var response = new OpenLayers.Protocol.Response();
response.foo();

編集:

または、このディスカッション リストの質問で Anders が指摘しているように、この方法で内部クラスに複数のコンストラクターを使用できます。

declare module OpenLayers {
    export interface IProtocolResponse {
        foo(): void;
    }

    export class Protocol {
        static Response: {
            new (): IProtocolResponse;
            new (string): IProtocolResponse;
        };
    }
}

var response = new OpenLayers.Protocol.Response('bar');
response.foo();

両方のアプローチの主な欠点は、 からクラスを派生できないことですOpenLayers.Protocol.Response

于 2012-10-14T02:13:12.517 に答える
0

これが私の更新された回答です。これが役立つことを願っています-OpenTypeの定義を開始する必要があります。

declare module OpenType {
   export class Protocol {
       constructor();
       Request;
   }
}

var x = new OpenType.Protocol();
var y = new  x.Request();
var z = x.Request;
于 2012-10-09T13:37:33.377 に答える