我有这个功能:
getMethod = (): ng.IPromise<any> => {
if (1 == 2) {
return this.$q.when();
}
var defer = this.$q.defer();
this.$http({
url: '/abc',
method: "GET"
})
.success((): void => {
//
defer.resolve();
})
.error((): void => {
//
defer.reject();
})
return defer.promise;
}
这没关系,返回的承诺不包含任何数据。
所以我把第一行改为:
getMethod = (): ng.IPromise<void> => {
现在我收到一个错误:
错误3无法转换'ng.IPromise&lt; {}&gt;' 'ng.IPromise': 类型'ng.IPromise&lt; {}&gt;'的属性类型'then'并且'ng.IPromise'不兼容:
有人可以就如何正确声明返回类型给我建议。我知道使用作品,但如果函数真的总是返回void,它似乎不是一个干净的解决方案。
答案 0 :(得分:5)
我不确定我是否理解你要做的事情,但这会毫无错误地转变
getMethod = (): ng.IPromise<void> => {
var defer:ng.IDeferred<void> = this.$q.defer<void>();
this.$http({ url: '/abc', method: "GET"}).then(
payload => defer.resolve(),
error=> defer.reject()
);
return defer.promise;
}
这可能意味着您想知道已完成的操作 我选择观察者模式,消息传递,回调? 在我看来,承诺更好地封装值,maybe_value,