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