推断对象键的类型

时间:2015-10-22 13:56:41

标签: typescript typescript1.6

TypeScript中是否可以声明一个结构,以便推断分配给functionerror键的jQuery.ajax的类型?然后,如果尝试分配错误的函数签名,我们就可以报告类型不匹配。

$.ajax({
    type: "POST",
    url: listUrl,
    jsonp: 'jsonp',
    dataType: "jsonp",
    success: OnSuccesCall,
    error: OnErrorCall
});

function OnErrorCall(jqXHR, textStatus, errorThrown) {
    ...
}

1 个答案:

答案 0 :(得分:1)

这应该已经在有限的范围内(由the definition you are using限制,并且由充满可选性的jQuery API完成)。

var listUrl = 'http://www.example.com/';
function OnSuccessCall (data, thing: boolean, another: boolean) {
    // implementation
}

function OnErrorCall () {
    // implementation
}

$.ajax({
    type: "POST",
    url: listUrl,
    jsonp: 'jsonp',
    dataType: "jsonp",
    success: OnSuccessCall,
    error: OnErrorCall
});

在上面的示例中,OnSuccessCall将导致TypeScript发出警告,因为它没有与success属性兼容的签名,该属性需要(data:any, textStatus: string, jqXhr: JQueryXHR) => any

请注意,您可以提供一个省略任何这些功能的功能,它将兼容(因为您不必对传递的参数执行任何操作)。