javascript - TypeScript-definisjon (d.ts) for Q "noConflict()"
Jeg jobber for øyeblikket med et prosjekt hvor jeg bruker Q-biblioteket for løfter med TypeScript.
Den nyeste versjonen av Q har metoden Q.noConflict(). For typingen bruker jeg .d.ts-filen fra DefinitelyTyped-repositoriet.
Skrivingen støtter ikke Q.noConflict(). Jeg prøvde i flere timer å omskrive skrivemåten for å støtte denne metoden, men uten suksess.
Jeg vil gjerne bruke koden slik:
var myQ = Q.noConflict();
Hvor myQ er av typen Q. Men i .d.ts er Q et modul som har både grensesnitt og funksjoner. Det betyr at jeg ikke bare kan legge til noe som dette noConflict(): Q.
Her er skjemaet fra definisjonsfilen (ikke hele filen, men med alle relevante deler):
erklær funksjon Q(verdi: T): Q.Promise;
declare module Q {
interface IPromise<T> {
then<U>(onFulfill?: (value: T) => U | IPromise<U>, onReject?: (error: any) => U | IPromise<U>): IPromise<U>;
}
interface Deferred<T> {
promise: Promise<T>;
}
interface Promise<T> {
get<U>(propertyName: String): Promise<U>;
}
export function when(): Promise<void>;
export function resolve<T>(object: T): Promise<T>;
}
declare module "q" {
export = Q;
}
Selvfølgelig forventer jeg ikke å få hele koden, men det ville vært flott å få noen hint fra folk som allerede har skrevet noen .d.ts-filer.
Svar #1
Bruk typeof Q som returtype:
declare module Q {
// ...
export function noConflict(): typeof Q;
// ...
}
