Typescript 类型脚本0.9.5编译器错误,IgniteUI I don';我不明白
我正在使用Infragistics IgniteUi库。 我有以下代码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
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。我会在我的回答中加上这个。