Loggfila modul og klasse samtidig?

stemmer
4

Jeg er for tiden prøver å bygge en Loggfila definisjonsfilen for OpenLayers.

Problemet er at i OpenLayers det er visse klasser som vil oversette til både en modul og en klasse i Loggfila.

For eksempel er det Protocolklasse i modulen OpenLayers, og det er en klasse Responsei modul OpenLayers.Protocol.

Hvordan kunne jeg modell som i Loggfila? Kan jeg lage Protocolen klasse og definere Responseklassen som en indre klasse som eksporteres? Hvordan vil du gå om å løse det problemet?

Publisert på 09/10/2012 klokken 11:51
kilden bruker
På andre språk...                            


2 svar

stemmer
1

Erklære Responsesom et staticfelt av Protocolsammen med en konstruktør typen, returnerer en interfacesom definerer Responseklasse:

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

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

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

Redigere:

Eller som Anders påpeker i denne diskusjonen liste spørsmålet , kan du ha flere konstruktører for den indre klassen på denne måten:

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

Den viktigste ulempen av begge tilnærminger er at du ikke kan utlede en klasse fra OpenLayers.Protocol.Response.

Svarte 14/10/2012 kl. 02:13
kilden bruker

stemmer
0

Her er min oppdaterte svar, som jeg håper hjelper - det bør komme i gang med å definere Opentype:

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

var x = new OpenType.Protocol();
var y = new  x.Request();
var z = x.Request;
Svarte 09/10/2012 kl. 13:37
kilden bruker

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