(我很抱歉这么多的打字稿问题 - 我刚刚开始使用TS)
我有一个名为index的KO observable。我只想把它的值增加一个。
原始JS代码:
data.index(data.index()+1);
这会产生编译错误:左侧必须是数字...所以我将值作为数字。
var currentIndex: number = data.index();
data.index(currentIndex-1);
然而,我又得到了另一个编译错误:类型“{}”不能指定为“number”类型。
如何告诉TS index()返回一个数字?
答案 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);