我们如何在typescript中声明viewmodels?
作为类,模块还是作为var / functions?
在绝对形式的例子中,他们主要使用var和函数https://github.com/borisyankov/DefinitelyTyped/blob/master/knockout/tests/knockout-tests.ts
编辑:谢谢Basarat - 在这个编辑中我扩展了问题: 如果我使用课程,我想它应该是这样的:class Player
{
min:KnockoutObservable<number>;
constructor(min:number=0)
{
this.min=ko.observable(min);
}
}
但是应该如何定义计算?
答案 0 :(得分:5)
你可以使用with generics(最新的Typescript 0.9),只需在声明中定义类型,在构造函数中你可以为调用ko.computed的结果赋值:
export class Inbox extends vm.BriskIdeaViewModel {
public rapidEntryText = ko.observable<string>();
public todosActive: KnockoutComputed<Array<ITodo>>;
constructor() {
super();
this.todosActive = ko.computed(() => {
return _.filter(this.dataContext.todos(), x => !x.isDone());
});
}
}
答案 1 :(得分:3)
我更喜欢使用类,因为它们确实非常好地封装了功能。
e.g。一个简单的课程:
class Player {
min = ko.observable(0);
sec = ko.observable(0);
mil = ko.observable(0);
}
然后做一个简单的申请:
var vm = new Player();
ko.applyBindings(vm);