Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 击倒可观察<;数量>;当绑定到typescript中的输入时返回字符串_Javascript_Knockout.js_Typescript - Fatal编程技术网

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

Javascript 击倒可观察<;数量>;当绑定到typescript中的输入时返回字符串,javascript,knockout.js,typescript,Javascript,Knockout.js,Typescript,我使用Knockout版本3.2.0及其来自nuget的定义: 我使用值绑定将属性绑定到输入(类型编号),属性定义为: export class SomeClass { myProp: KnockoutObservable<number>; constructor() { myProp = ko.observable(0); } } 结果不是4,正如您所期望的那样,结果实际上是“22”,即串联 有什么合理的解决办法吗?这是敲除中的错误还是记录的行

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

我使用值绑定将属性绑定到输入(类型编号),属性定义为:

export class SomeClass {
    myProp: KnockoutObservable<number>;

   constructor() {
       myProp = ko.observable(0);
   }
}
结果不是4,正如您所期望的那样,结果实际上是“22”,即串联


有什么合理的解决办法吗?这是敲除中的错误还是记录的行为?

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


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

无论是谁更正了文章,请参见,行为都是正确的英式英语拼写!下面是一个用coco实现的类型化可观察对象(只需将其编译为javascript)。它有很多额外的东西,对不起,我没有太多时间给你打开。这就是为什么我只是发表评论:我至少希望typescript会抛出一个运行时错误,即从数字类型返回字符串,因为这基本上使类型检查完全无用……另一方面,这可能真的很难实现,而且效率很低。这不是typescript运行时错误。所有类型脚本都发生在编译过程中time@Santhos没有类型脚本运行时。Typescript是编译器的“魔法”。这就是为什么我说它很难实现的原因。您将需要生成更多的代码,并只抛出一般错误。我知道Typescript是“在构建时”编译成javascript的。@Santhos这是knocout设计的,因为里面没有类型的概念。然而,这是一个常见的问题,有一个共同的模式来解决它:
var x = myinstance.myProp() + myinstance.myProp();