Typescript 类型脚本0.9.5编译器错误,IgniteUI I don';我不明白

Typescript 类型脚本0.9.5编译器错误,IgniteUI I don';我不明白,typescript,Typescript,我正在使用Infragistics IgniteUi库。 我有以下代码 var col1 = $("#grid1").igGrid("option", "columns")[1]; col1是这样一个简单的对象 { key:"aa", headerText:"bb"} 我把我自己的一个财产附在这个专栏上 { key:"aa", headerText:"bb", mine:"cc"} 所以当我这么做的时候 var col1 = $("#grid1").igGrid("option", "co

我正在使用Infragistics IgniteUi库。 我有以下代码

var col1 = $("#grid1").igGrid("option", "columns")[1];
col1是这样一个简单的对象

{ key:"aa", headerText:"bb"}
我把我自己的一个财产附在这个专栏上

{ key:"aa", headerText:"bb", mine:"cc"}
所以当我这么做的时候

var col1 = $("#grid1").igGrid("option", "columns")[1];
var value1 = col1.mine;
编译器不喜欢它,给了我错误

错误1“HtmleElement”类型的值上不存在属性“mine”

我可以通过将col1定义为任何ie来绕过编译错误

var col1:any = $("#grid1").igGrid("option", "columns")[1];
但我没想到编译器会认为col1是一个“HTMLElement”

我的ignite.d.ts文件对列的定义如下

interface IgGrid {
    ..
    columns?: IgGridColumn[];
}

interface IgGridColumn {
    headerText?: string;
    key?: string;
    formatter?: any;
    format?: string;
    dataType?: string;
    width?: string;
    hidden?: boolean;
    template?: string;
    unbound?: boolean;
    group?: any[];
    rowspan?: number;
    formula?: string;
    unboundValues?: any[];
}
所以我认为编译器给出的错误“mine”不是IgGridColumn的属性


我的理解有误吗?

您可以扩展IgGridColumn接口以包含自定义属性,如下所示:

interface IgGridColumn {
    mine: string;
}
这不仅可以解决编译器错误,还可以对值进行类型检查

如果发现jQuery调用没有返回IgGridColumn,可以使用相同的技巧:

interface JQuery {
    igGrid(a: string, b: string) : IgGridColumn[];
}
允许您在此处继续使用推断类型:

var col1 = $("#grid1").igGrid("option", "columns")[1];

谢谢我刚刚意识到我应该做什么。我应该说var col1:IgGridColumn=$(“#grid1”).igGrid(“选项”,“列”)[1];然后编译器就可以正常工作了。实际上,您可以做得更好—您可以告诉编译器igGrid函数返回IgGridColumn。我会在我的回答中加上这个。