TypeScript将string转换为数字

任何人有关如何将string转换为数字在TypeScript的build议?

var aNumber : number = "1"; // --> Error // Could this be done? var defaultValue = 0; var aNumber : number = "1".toInt32(defaultValue); // Or .. var defaultValue = 0; var aNumber : number = StringToInt("1", defaultValue); 

更新:我做了一些额外的困惑,我已经想出了最好的沙发:var aNumber:number =(“1”)* 1;

检查一个string是否是数字在这里回答: 在打字稿中,如何检查一个string是否是数字 。

您可以使用parseIntparseFloat函数,或者使用一元+运算符:

 var x = "32"; var y = +x; // y: number 

打字稿的方式是:

 Number('1234') // 1234 Number('9BX9') // NaN 

如在这里回答: https : //stackoverflow.com/a/23440948/2083492

阐述Ryan所说的,TypeScript总体上包含了JavaScript的习惯用法。

 var n = +"1"; // the unary + converts to number var b = !!"2"; // the !! converts truthy to true, and falsy to false var s = ""+3; // the ""+ converts to string via toString() 

JavaScripttypes转换中所有有趣的深入细节。

对于我们的Angular用户:

Number(x)parseInt(x)模板中引发错误, +x不起作用。 有效的投射将是x*1x/1

如其他答案所示,有多种方法可以进行转换:

 Number('123'); +'123'; parseInt('123'); parseFloat('123.45') 

但是我想在parseInt上再提一点。

当使用parseInt总是传递基数参数是有意义的。 对于十进制转换,即10 。 这是参数的默认值,这就是为什么可以省略。 对于二进制,对于hex是216 。 实际上,2和36之间的任何基数都可以工作。

 parseInt('123') // 123 (don't do this) parseInt('123', 10) // 123 (much better) parseInt('1101', 2) // 13 parseInt('0xfae3', 16) // 64227 

parseInt函数,分析string将其转换为数字。 在一些JS实现中, parseInt将前导零parsing为八进制:

尽pipeECMAScript 3不鼓励ECMAScript 3和ECMAScript 5禁止,但许多实现将以0开头的数字string解释为八进制。 以下可能有一个八进制结果,或者可能有一个十进制结果。 总是指定一个基数来避免这种不可靠的行为。

– MDN

代码变得更清晰的事实是指定基数参数的一个很好的副作用。

由于parseFloat仅以10为基数来分析数值expression式,所以这里不需要radix参数。

更多关于这个:

  • 为什么我们需要使用基数? (SO问题)
  • SO回答“parseInt()和Number()之间有什么区别?”

在Typescript中有像parseInt()parseFloat()Number()这样的内置函数,你可以使用这些函数。