击倒可观察<数字>在绑定到typescript中的输入时返回字符串

KnockoutObservable<number> returns string when bound to an input in typescript

本文关键字:typescript 字符串 输入 返回 观察 lt 数字 gt 绑定      更新时间:2023-09-26

我使用Knockout版本3.2.0及其来自nuget:的明确类型定义

我有一个属性绑定到具有值绑定的输入(类型号),属性定义为:

export class SomeClass {
    myProp: KnockoutObservable<number>;
   constructor() {
       myProp = ko.observable(0);
   }
}

现在,摆弄控制台,当初始化类时,调用该属性时会返回0。但是,在我更改输入中的值后,属性开始返回字符串,例如,如果我将其更改为2,则返回的值为"2"。当把两个这样的属性加在一起时,这显然是一个问题。

var x = myinstance.myProp() + myinstance.myProp();

结果不是4,正如您所期望的那样,结果实际上是"22",即串联。

有什么合理的解决方案吗?这是淘汰赛中的错误还是记录在案的行为?

您已经将字符串值绑定到数字类型,并希望在绑定过程中自动进行类型转换。这是行不通的,因为KnockoutJS首先是一个Javascript框架,它对Typescript的类型系统一无所知。

您可以将该属性设置为可写的可计算可观测属性,也可以引入只读的可计算观测属性,该属性只需通过parseInt()运行"myProp"的当前值。