【发布时间】:2017-09-16 20:47:10
【问题描述】:
我有一个返回链式 promise 的类,第一个 promise 的类型是 angular.IPromise<Foo>,第二个 promise 用类型 angular.IPromise<Bar> 解析。
为什么是doSomethingangular.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声明为返回值的类型,您如何计算返回类型将为angular.IPromise<Foo>? typescript 不知道 runtime 返回值,它静态地分析代码。 -
返回类型是 angular.IPromise
- 我可以很容易地测试它。我期望返回类型是 angular.IPromise 因为这是 doSomething() 函数返回的第一件事。 -
.then是Promise就像.map是Array。
标签: javascript angular typescript strong-typing