Modulo dattiloscritto e di classe allo stesso tempo?

voti
4

Attualmente sto cercando di costruire un file di definizione dattiloscritto per OpenLayers.

Il problema è che in OpenLayers ci sono alcune classi che si tradurrebbe in sia un modulo e una classe a macchina.

Per esempio c'è la Protocolclasse nel modulo OpenLayerse non v'è una classe Responsenel modulo OpenLayers.Protocol.

Come potevo modellare che a macchina? Posso fare Protocoluna classe e definire la Responseclasse come una classe interna che viene esportata? Come si va di risolvere questo problema?

È pubblicato 09/10/2012 alle 12:51
fonte dall'utente
In altre lingue...                            


2 risposte

voti
1

Dichiarare Responsecome un staticcampo di Protocolun tipo di costruzione, restituendo un interfaceche definisce la Responseclasse:

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

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

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

Modificare:

O come sottolinea Anders in questa lista di discussione domanda , è possibile avere più costruttori per la classe interna in questo modo:

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

Lo svantaggio principale di entrambi gli approcci è che non è possibile derivare una classe da OpenLayers.Protocol.Response.

Risposto il 14/10/2012 a 03:13
fonte dall'utente

voti
0

Ecco la mia risposta aggiornato, che spero aiuti - dovrebbe iniziare sulla definizione OpenType:

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

var x = new OpenType.Protocol();
var y = new  x.Request();
var z = x.Request;
Risposto il 09/10/2012 a 14:37
fonte dall'utente

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