从KO观察得到一个数字

时间:2015-05-31 11:30:38

标签: typescript

(我很抱歉这么多的打字稿问题 - 我刚刚开始使用TS)

我有一个名为index的KO observable。我只想把它的值增加一个。

原始JS代码:

data.index(data.index()+1);

这会产生编译错误:左侧必须是数字...所以我将值作为数字。

var currentIndex: number = data.index();
data.index(currentIndex-1);

然而,我又得到了另一个编译错误:类型“{}”不能指定为“number”类型。

如何告诉TS index()返回一个数字?

2 个答案:

答案 0 :(得分:3)

包含number的基因敲除观察点可以这样定义:

var myObservable : KnockoutObservable<number>;

您应该指定observable将包含的类型。例如:

var data = {
    index : ko.observable<number>(),
    // etc..
};

这样当你调用data.index()时,编译器知道返回的类型是数字:

data.index(data.index() + 1); // ok

答案 1 :(得分:2)

它不知道data.index()正在返回什么,所以我建议在递增前投出该值...

data.index((<number>data.index())+1);

或者像上面的代码将代码分成两行......

var index = <number>data.index();
data.index(index + 1);