ben*_*inz 20 javascript typescript
JavaScript函数parseInt可用于强制将给定参数转换为整数,无论该参数是字符串,浮点数,数字等.
在JavaScript中,没有错误parseInt(1.2)会产生1,但是,在TypeScript中,它会在编译期间抛出一个错误:
error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
Run Code Online (Sandbox Code Playgroud)
我在这里遗漏了什么,或者是TypeScript的预期行为?
Rya*_*ugh 27
不要parseInt用来做这个操作 - 使用Math.floor.
使用parseInt到floor一些并不总是会产生正确的结果.parseInt(4e21)回报4,而不是4e21.parseInt(-0)回报0,而不是-0.
Gio*_*sta 10
我认为其他人已经在这里给出了很多有效的答案,但在我看来,最简单的方法是调用.toString()原始值,并明确基数:
parseInt((1.2).toString(), 10);
该函数parseInt确实期望string第一个参数.请查看文档.通常你可以省略第二个radix参数,然后它将回退到默认值10.但最安全的是始终将数字系统库添加为第二个参数(通常10).
如果你想投一个一般的价值number,你可以使用Number功能,像这样.
var myNumber = Number(myGeneralValue);
Run Code Online (Sandbox Code Playgroud)
小智 5
看一下打字:
parseInt(string: string, radix?: number): number;
^^^^^^
Run Code Online (Sandbox Code Playgroud)
第一个参数必须是字符串。这符合规范:
parseInt (string , radix)
该函数根据指定的基数生成一个由字符串parseInt参数内容解释决定的整数值。
在普通 JS 中,根据规范中的以下规则,第一个参数被强制为字符串:
- 令inputString为 ToString( string )。
这就是为什么parseInt(1.2)有效。
请注意,规范允许基数为undefined,这与省略它相同,因此radix?: number签名部分有问号。当然,在本例中,它默认为 10(除非字符串看起来像0xabc)。
正如其他答案中提到的,parseInt如果您真正想做的是取整或截断操作,那么无论如何都不是最好的解决方案。
| 归档时间: |
|
| 查看次数: |
14114 次 |
| 最近记录: |