Gépelt modul és az osztály egyszerre?

szavazat
4

Én jelenleg próbál építeni egy géppel definíciós fájl OpenLayers.

A probléma az, hogy OpenLayers vannak bizonyos osztályok, ami lefordítja mind egy modult, és egy osztály géppel.

Például ott van a Protocolosztály modult OpenLayers, és van egy osztály Responsemodulban OpenLayers.Protocol.

Hogy is modellezni, hogy géppel? Lehet, hogy Protocolegy osztály, és meghatározza az Responseosztály, mint egy belső osztály exportáljuk? Hogy mennél megoldása ezt a problémát?

A kérdést 09/10/2012 12:51
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
1

Állapítsa Responsemint staticterületén Protocola kivitelező típusú, visszatér egy interfacemeghatározó Responseosztály:

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

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

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

edit:

Vagy ahogy Anders rámutat a vita listán kérdést , akkor több konstruktorokat belső osztály a következő módon:

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

A fő hátránya mindkét megközelítés az, hogy nem lehet levezetni egy osztályt OpenLayers.Protocol.Response.

Válaszolt 14/10/2012 03:13
a forrás felhasználó

szavazat
0

Itt van a frissített válasz, ami remélem segít - ez a kezdéshez meghatározásáról szóló OpenType:

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

var x = new OpenType.Protocol();
var y = new  x.Request();
var z = x.Request;
Válaszolt 09/10/2012 14:37
a forrás felhasználó

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