首页 文章

TypeScript - 调用jQuery getJSON()函数时出错

提问于
浏览
0

我正在使用TypeScript 1.7.5和最新的jQuery类型定义 . 以下对$ .getJSON()的调用失败,并显示“错误TS2346:提供的参数与调用目标的任何签名都不匹配”

let url: string = api + '/orgs/' + orgname + '/repos?per_page=100';
$.getJSON(url, function(repos: Repo[]) {
    ...
});

回购定义为:

export interface Repo {
    name: string;
    stargazers_count: number;
    forks_count: number;
}

getJSON()的类型定义是:

getJSON(url: string, success?: (data: any, textStatus: string, jqXHR: JQueryXHR) => any): JQueryXHR;

我错过了什么?

Update

我发现错误实际上来自链接一个对 error() 的调用,这在常规jQuery中是完全合法的 . 如果我将此调用移至 error() ,则错误消失 . 知道如何处理TypeScript中 getJSON() 的错误吗?

interface Repo {
    name: string;
    stargazers_count: number;
    forks_count: number;
}
var url = "/echo/json/";

$.getJSON(url, (data: any, textStatus: string, jqXHR: JQueryXHR) => {
    var repos: Repo[] = data;
    //...
    alert(JSON.stringify(repos));
})
.error(function() {
    callback([]);
});

1 回答

  • 0

    我认为这有助于:

    $.getJSON(url, (data: any, textStatus: string, jqXHR: JQueryXHR) => {
        var repos: Repo[] = data;
        //...
    });
    

    请检查jsfiddle .

    更新1 .

    您应该使用“fail”来处理错误:

    interface Repo {
        name: string;
        stargazers_count: number;
        forks_count: number;
    }
    var url = "/echo/json/";
    
    $.getJSON(url, (data: any, textStatus: string, jqXHR: JQueryXHR) => {
        var repos: Repo[] = data;
        //...
        alert(JSON.stringify(repos));
    })
    .fail(function() {
        alert("error!");
        //callback([]);
    });
    

相关问题