【发布时间】:2014-10-08 01:56:58
【问题描述】:
我无法理解 JQueryPromise 的类型。 我希望我的承诺是 void 类型,但是当接口定义接受 void 时,我不知道如何返回/转换承诺以匹配接口签名。编译时出现错误:
'() => JQueryPromise' 和 '() => JQueryPromise' 类型的调用签名不兼容。
以下是代码示例:
module Sample {
export interface Ifoo {
bar: () => JQueryPromise<void>;
}
export class fooClass implements Ifoo {
bar() {
var result = $.Deferred();
// logic
return result.promise();
}
}
}
我做错了什么;或者我可以做对什么?
谢谢!
-约翰
【问题讨论】:
-
不要在承诺中使用
void。每个承诺都应该代表一个结果值。 -
你
resolve()被推迟了做什么? -
@Bergi
undefined是允许的,相当于void: promisesaplus.com -
@basarat:当然可以,但不推荐。我说的是“应该”,而不是“必须”:-)
-
它很有用,例如当您需要以承诺方式超时时。如果要返回值,请不要使用 void。我觉得没有什么特别推荐的:)
标签: jquery interface typescript jquery-deferred