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

TypeScript - Error calling jQuery getJSON() function

我正在使用 TypeScript 1.7.5 和最新的 jQuery 类型定义。以下对 $.getJSON() 的调用失败并显示 "error TS2346: Supplied parameters do not match any signature of call target"

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;

我错过了什么?

更新

我发现这个错误实际上是来自对 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([]);
});

我认为这可以帮助:

$.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([]);
});