2

我刚刚升级到 TypeScript 0.9,突然我的 JQuery 定义文件(用于 JQuery 1.8)爆炸了。具体来说,接口 JQuery 正在报告其中定义的每个方法的错误。他们都报告“所有属性必须是字符串索引器类型'HTMLElement'的子类型。

interface JQuery {

    ajaxComplete(handler: any): JQuery;
    ajaxError(handler: (event: any, jqXHR: any, settings: any, exception: any) => any): JQuery;
    ajaxSend(handler: (event: any, jqXHR: any, settings: any, exception: any) => any): JQuery;
    ajaxStart(handler: () => any): JQuery;
    ajaxStop(handler: () => any): JQuery;
    ajaxSuccess(handler: (event: any, jqXHR: any, settings: any, exception: any) => any): JQuery;
    ... //All reporting same error
}

如您所料,JQuery 接口在我的项目中的许多不同文件中定义。这是统一接口的错误还是我错过了需要对定义文件进行的一些更改?

4

1 回答 1

6

这不是错误。它是一个计划中的功能。这是因为一旦定义了索引器,它也可以用于访问属性,因此属性需要是索引器的子类型。例如:

interface Foo{
    [x:string]:number; // Now all properties must be subtypes of number 
    bar:number ; // okay 
    baz:string ; // Error  
}

试试看

您可以在这里找到有效的 Jquery 定义:https ://github.com/borisyankov/DefinitelyTyped/blob/master/jquery/jquery.d.ts

于 2013-06-19T21:48:49.307 回答