TypeScript och void Q-löften


Vad är det korrekta sättet att använda Q-löften med TypeScript 1.6 om de är void? Det vill säga, de representerar inget värde. Till exempel:

return Q.Promise<void>((resolve,reject) => {
    resolve();
}

eller

let deferred = Q.defer<void>();
deferred.resolve();
return deferred.promise;

Anropet till resolve() ger felet:

Supplied parameters do not match any signature of call target
(parameter) resolve: (val: void | Q.IPromise<void>) => void

Observera, följande fungerar:

let deferred = Q.defer<string>();
deferred.resolve("Hello World");
return deferred.promise;

Är detta bara ett fel i DefinitelyTyped-typen (uppdaterad 17 augusti 2015 enligt detta skrivande) kanske, eller anger jag det fel?

Svar #1

För Q med TS1.6 slutade jag med att använda:

return Q.Promise<void>((resolve,reject) => {
    resolve(null);
}

Svar #2

Om det inte finns något returvärde eller om jag inte bryr mig om returvärdet, har jag använt...

return Q.Promise<any>((resolve, reject) => {
  resolve();
}

Relaterade artiklar