我刚刚升级到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
}
Run Code Online (Sandbox Code Playgroud)
正如您所料,JQuery接口在我的项目中的许多不同文件中定义.这是统一接口的错误还是我错过了一些需要对定义文件进行的更改?
这不是一个错误.它是一个计划的功能.这是因为一旦定义了索引器,它也可以用于访问属性,因此属性需要是索引器的子类型.例如:
interface Foo{
[x:string]:number; // Now all properties must be subtypes of number
bar:number ; // okay
baz:string ; // Error
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到有效的Jquery定义:https://github.com/borisyankov/DefinitelyTyped/blob/master/jquery/jquery.d.ts
| 归档时间: |
|
| 查看次数: |
2604 次 |
| 最近记录: |