gpt4 book ai didi

jquery - TypeScript Jquery Promise 参数不匹配

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:41 24 4
gpt4 key购买 nike

我正在使用 TypeScript 0.8.2 和来自 https://github.com/borisyankov/DefinitelyTyped/tree/master/jquery 的最新 JQuery 1.9 .d.ts 定义

为了隔离问题,我有一个简单的 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() 方法的第一个参数上。他是截图:

TypeScript JQuery Deferred Compile Problem

据我所知,.d.ts 文件中的 .when() 方法重载了 .when(options: any) 并且 .ajax 被定义为实现 JQueryPromise 接口(interface)的 JQueryXHR 类型.

理论上这应该可以正常工作,因为它反射(reflect)了 .when() 的 jQuery 文档 http://api.jquery.com/jQuery.when/

$.when( $.ajax("test.aspx") ).then(function(data, textStatus, jqXHR){
alert( jqXHR.status ); // alerts 200
});

那我错过了什么?我是不是定义错了什么?

最佳答案

jQuery 的类型文件中可能存在细微错误。以下作品:

$.when( $.ajax("test.aspx") ).then(function(data, textStatus, jqXHR){
alert( jqXHR.status );
}, null);

这是因为类型文件希望您同时传递成功处理程序和失败处理程序。我将检查文档并更新定义以表明故障处理程序是可选的。

更新

我已提交以下对 jQuery 类型定义的更改:

then(doneCallbacks: any, failCallbacks: any, progressCallbacks?: any): JQueryPromise;

改为

then(doneCallbacks: any, failCallbacks?: any, progressCallbacks?: any): JQueryPromise;

关于jquery - TypeScript Jquery Promise 参数不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14467915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com