Modulul typescript și clasa simultan?

voturi
4

Eu sunt în prezent încercarea de a construi un fișier de definiție pentru masina de scris OpenLayers.

Problema este că, în OpenLayers există anumite clase care ar traduce atât un modul și o clasă de dactilografiat.

De exemplu , există Protocolclasa în modulul OpenLayersși există o clasă Responseîn modul OpenLayers.Protocol.

Cum aș putea model care dactilografiat? Pot face Protocolo clasă și definesc Responseclasa ca o clasă interioară , care este exportat? Cum te-ai duce cu privire la rezolvarea acestei probleme?

Întrebat 09/10/2012 la 12:51
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
1

Declararea Responseca staticdomeniu de Protocolun tip constructor, revenind un interfacecare definește Responseclasa:

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

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

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

Editați | ×:

Sau cum Anders subliniază în această listă de discuții întrebare , puteți avea mai multe constructori pentru clasa de interior în acest fel:

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();

Dezavantajul principal al ambelor abordări este că nu se poate obține o clasă de la OpenLayers.Protocol.Response.

Publicat 14/10/2012 la 03:13
sursa de către utilizator

voturi
0

Iată răspunsul meu actualizat, care sper ajuta - ar trebui sa ai început pe definirea OpenType:

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

var x = new OpenType.Protocol();
var y = new  x.Request();
var z = x.Request;
Publicat 09/10/2012 la 14:37
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more