打字稿中的Knockout Viewmodel

Run*_*sen 4 knockout.js typescript

我们怎么应该在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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是应该如何定义计算?

nih*_*que 6

您可以使用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());
        });
    }
}
Run Code Online (Sandbox Code Playgroud)