我使用的是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'HTMLElement'
类型的值不存在属性'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[];
}
所以我认为编译器给出错误'我的'不是IgGridColumn的属性。
我的理解错了吗?
答案 0 :(得分:0)
您可以扩展IgGridColumn接口以包含您的自定义属性,如下所示:
interface IgGridColumn {
mine: string;
}
这不仅会解决编译器错误,还会对值进行类型检查。
如果您发现自己没有从jQuery调用中获取IgGridColumn,则可以使用相同的技巧:
interface JQuery {
igGrid(a: string, b: string) : IgGridColumn[];
}
这允许您在此处继续使用推断类型:
var col1 = $("#grid1").igGrid("option", "columns")[1];