typescript - Hvordan utvide eksternt rammeverks d.ts (jQuery) uten å endre den originale?


Jeg bruker jQuery og dens definisjoner fra Definitely Typed-samlingen. Jeg vil utvide den med en Farbtastic-fargevelger som legger til nye metoder direkte til JQueryStatic, for eksempel:

$.farbtastic(placeholder)

Jeg ønsker ikke å endre den originale jquery.d.ts-filen for å legge til denne metoden, i stedet vil jeg lage noe som jquery-extend.d.ts med de ekstra metodene.

Svar #1

Jeg fant ut at det ikke er noe som hindrer meg i å legge til nye metoder til de originale klassene, så i jquery-extend.d.ts erklærer jeg ganske enkelt:

interface JQueryStatic {
    farbtastic(element : string, callback? : Function) : Farbtastic;
}

interface JQuery {
    farbtastic(element : string, callback? : Function) : void;
}

interface Farbtastic {
    linkTo(callback : Function) : void;
    setColor(color : string) : void;
}

Håper dette vil hjelpe noen en dag.

Relaterte artikler