4

我们应该如何在打字稿中声明视图模型?

作为类、模块还是作为 var/functions?

在确定类型的示例中,他们主要使用 var 和函数https://github.com/borisyankov/DefinitelyTyped/blob/master/knockout/tests/knockout-tests.ts

编辑:谢谢巴萨拉特 - 在这个编辑中,我扩展了这个问题:如果我使用类,我想它应该是这样的:

class Player
{
    min:KnockoutObservable<number>;
    constructor(min:number=0)
    {
        this.min=ko.observable(min);
    }
}

但是应该如何定义计算?

4

2 回答 2

6

您可以使用泛型计算(最新的 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());
        });
    }
}
于 2013-06-28T10:15:36.357 回答
3

我更喜欢使用类,因为它们确实非常好地封装了功能。

例如一个简单的类:

class Player {
    min = ko.observable(0);
    sec = ko.observable(0);
    mil = ko.observable(0);
}

然后做一个简单的应用:

    var vm = new Player();
    ko.applyBindings(vm);
于 2013-06-27T12:33:46.467 回答