【发布时间】:2016-05-30 18:54:30
【问题描述】:
在 KnockoutJS 中,您可以向 observableArrays 添加其他属性,例如:
class Table {
items: KnockoutObservableArray<SomeType>;
constructor() {
this.items = ko.observableArray<SomeType>();
this.items.someMethod = ko.pureComputed([...]);
}
}
也就是说,TypeScript 会将someMethod 属性标记为错误并且不会编译。
上面的内容似乎适用于 KnockoutObservable<T>,但不适用于KnockoutObservableArray<T>(使用DefinitelyTyped 的Knockout 定义文件)。
有没有一种方法可以允许这些额外的属性,而不必为每一个属性都使用以下属性?
/// Inside a custom definition file
interface KnockoutObservableArray<T> {
someMethod: any; // Works, but is tedious and pollutes the definitions
[x: string]: any; // Indexers don't work...
}
我也不热衷于使用any 来定义父属性。
编辑
好的,看来,为了让它工作,需要使用索引器选项,然后将动态属性引用为this.items['someMethod']() 而不是this.items.someMethod()。看起来 TypeScript 规范根本不允许在类定义中使用 dynamic 或任意属性。
【问题讨论】:
标签: knockout.js typescript knockout-3.0 typescript1.6 definitelytyped