jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了TypeScript Jquery Promise参数不匹配大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用的是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()方法的第一个参数上.他是截图:

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

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

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

那我错过了什么?我有什么不对吗?

解决方法

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

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

是因为类型文件要求您传递成功处理程序和失败处理程序.我将检查文档并更新定义以显示失败处理程序是可选的.

更新

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

then(doneCallBACks: any,failCallBACks: any,progressCallBACks?: any): JQueryPromise;

变成

then(doneCallBACks: any,failCallBACks?: any,progressCallBACks?: any): JQueryPromise;

大佬总结

以上是大佬教程为你收集整理的TypeScript Jquery Promise参数不匹配全部内容,希望文章能够帮你解决TypeScript Jquery Promise参数不匹配所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。