为了隔离问题,我有一个简单的 TypeScript 类定义,它尝试使用 .when() 和 .then() 语法进行单个 $.ajax 调用。这是我的代码:
/// <reference path="../../jquery.d.ts" />
module Demo {
// Class
export class TestDeferred {
// Constructor
constructor() {
$.when(this.testAjaxCall()).then((data, status, jqXHR: JQueryXHR) => {
alert(jqXHR.statusText);
});
$.when($.ajax("test.htm")).then(() => {
console.log("yay");
});
}
testAjaxCall() {
return $.ajax("Test.aspx");
}
}
}
在这两个测试用例中,我得到一个编译时错误,上面写着:
提供的参数与调用目标的任何签名都不匹配,红色波浪线位于 .when() 方法的第一个参数上。他是截图:
据我所知,.d.ts 文件中的 .when() 方法具有 .when(options: any) 的重载,并且 .ajax 被定义为实现 JQueryPromise 接口的 JQueryXHR 类型。
从理论上讲,这应该可以正常工作,因为它反映了 .when() http://api.jquery.com/jQuery.when/的 jQuery 文档
$.when( $.ajax("test.aspx") ).then(function(data, textStatus, jqXHR){
alert( jqXHR.status ); // alerts 200
});
那么我错过了什么?我定义错了吗?