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;

我错过了什么?

更新

我发现错误确实来自链接调用error(),这在常规 jQuery 中是完全合法的。如果我删除这个error()对错误的调用就会消失。知道如何处理getJSON()TypeScript 中的错误吗?

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

1 回答 1

0

我认为这会有所帮助:

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

请检查jsfiddle

更新 1。

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

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([]);
});
于 2016-01-26T12:57:58.427 回答