Strojopisu modul a třída současně?

hlasů
4

V současné době jsem se snaží vytvořit definiční soubor strojopis pro OpenLayers.

Problém je v tom, že v OpenLayers existují určité třídy, které by znamenalo jak modulu a třídy na psacím stroji.

Například tam je Protocoltřída v modulu OpenLayersa tam je třída Responsev modulu OpenLayers.Protocol.

Jak jsem mohl modelovat, že na stroji? Mohu provést Protocoltřídu a definovat Responsetřídu jako vnitřní třídy, která se vyváží? Jak byste jít o řešení tohoto problému?

Položena 09/10/2012 v 12:51
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Určit, Responsejako staticpole Protocols typem konstruktoru, vrací interfacekterá definuje Responsetřídy:

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

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

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

Upravit:

Nebo jako Anders poukazuje v této diskuze seznamu otázku , můžete mít více konstruktérů pro vnitřní třídu tímto způsobem:

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

Hlavní nevýhoda obou přístupů je, že nelze odvodit třídu z OpenLayers.Protocol.Response.

Odpovězeno 14/10/2012 v 03:13
zdroj uživatelem

hlasů
0

Tady je můj aktualizován odpověď, kterou doufám, že pomůže - to by mělo dostat jste začali na definování OpenType:

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

var x = new OpenType.Protocol();
var y = new  x.Request();
var z = x.Request;
Odpovězeno 09/10/2012 v 14:37
zdroj uživatelem

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