連鎖約束を返すクラスがあり、最初の約束の型はangular.IPromise<Foo>
であり、2番目の約束は型がangular.IPromise<Bar>
で解決されます。連鎖した約束を返す関数の戻り型
なぜ返品タイプはdoSomething
angular.IPromise<Bar>
ですか?
戻り値の型はangular.IPromise<Foo>
であると私は考えていました。なぜなら、それが関数によって返される最初のものだからです。私はthen()
が約束を返し、返されたものをその応答に包むことに気付いていますが、これはまだ私を混乱させています。
import { Something } from '../somewhere';
import { Bar } from '../somewhereelse';
class Test {
doSomething(): angular.IPromise<Bar> {
return Something.getFoo() // getFoo() return type angular.IPromise<Foo>
.then(() => {
let x: Bar = {};
return x;
});
}
}
助けてください。私は、必要に応じてコードを提供しています。
あなたは戻り値の型は '角度になることを理解しますか。戻り値の型として 'Bar'を宣言している場合は、IPromise'? typescriptは*実行時*の戻り値を知らないので、コードを静的に解析します*。 –
戻り値の型は角度です.IPromise - 私は簡単にそれをテストできます。私は戻り値の型が角度であることを期待していました。分かりませんこれはdoSomething()関数から返される最初のものですから。 –
'.then'は' .map'が 'Array'であるため' Promise'です。 –