mit Typescript 2.0.7
Typoskript nicht Fehler werfen auf falsche Versprechen Rückgabetyp
Bei der Verwendung von q
Promises, selbst wenn eine definierte Rückgabetyp der Funktion oder sogar die jeweiligen then
erklärt, solange die Funktion könnte zurückkehren null
Jede Typeinschränkung wird ersetzt und falsche Auflösungstypen verursachen keinen Fehler.
import Q = require('q');
class Foo {
prop1: string;
prop2: number;
}
function test() : Q.IPromise<Foo>
{
return Q.resolve('stuff')
.then<Foo>(() =>
{
if(Math.random() > 0.5)
{
return Q.resolve({ id: 3, value: new Foo() }) // This should throw an error
}
else
{
return Q.resolve(null);
}
});
}
Des Weiteren bei dem Versuch, das gleiche Verhalten mit ES6 Promises folgenden Code zu testen, hat auch nicht einen Fehler aus.
function test(): Promise<Foo>
{
return new Promise((resolve, reject) => {
resolve('foo');
})
}
Könnte jemand dieses Verhalten erklären und was die richtigen Fehler zu bekommen zu tun oder ist das ein Bug mit Typoskript? (Ich habe mehrere Probleme gesehen, die ähnliche Situationen beschreiben, aber keiner von ihnen konnte wirklich dieses Verhalten erklären)
Das habe ich befürchtet, da es Platz für Fehler lässt. Irgendeine Idee auf der ersten? – Aides
Niemals 'Q' verwendet, aber gemäß seiner Eingabe (https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/q/Q.d.ts) handelt es sich um die Resolve-Methode, die den versprochenen generischen Typ ableitet. So sollte es sein 'Q.resolve' –
goenning
True - zum Glück ist es genug, um es nur auf die 'Null' Auflösung wie 'Q.resolve (null)' (sonst würde es als 'Versprechen ') aber immer noch zu lösen eher problematisch, da TS nicht sicherstellt, dass der Funktionsrückgabetyp tatsächlich mit dem tatsächlich zurückgegebenen Wert übereinstimmt. –
Aides