Javascript 导致类型错误的两个安全整数之间的除法

Javascript 导致类型错误的两个安全整数之间的除法,javascript,typescript,javascript-objects,Javascript,Typescript,Javascript Objects,使用Javascript ES5,将0除以一个安全整数:8007199254740991会产生以下类型的错误: TypeError:无法将BigInt转换为数字 下面是一个简化的代码段: console.log('Numerator is ' + row.num); console.log('Denominator is ' + row.den); console.log('Result is' + row.num ? row.num / row.den : 123); 输出为: 分子是0 分

使用Javascript ES5,将
0
除以一个安全整数:
8007199254740991
会产生以下类型的错误:

TypeError:无法将BigInt转换为数字

下面是一个简化的代码段:

console.log('Numerator is ' + row.num);
console.log('Denominator is ' + row.den);
console.log('Result is' + row.num ? row.num / row.den : 123);
输出为:

分子是0
分母是8007199254740991
TypeError:无法将BigInt转换为数字

row.num和row.den均为es5类型编号。有人能解释一下这里发生了什么吗?

“是es5类型的数字”你怎么知道的?@Jonaswillms去寻找数字类型的来源让我找到lib.es5.d.ts。有没有更好的方法来验证呢?好吧,那么有人把那个BigInt打错了数字。如果你写
console.log(typeof row.num)
console.log(typeof row.den)
我想你会发现其中一个是
BigInt
而不是
number
。您实际在哪里设置这些属性?你是用TypeScript还是JavaScript?如果是TypeScript,那么赋值是强类型的还是使用类似类型断言的东西?我想我们需要更多的信息才能成为@jcalz你说得对。看起来分母的类型显示为bigint。这是typescript,我的示例基于此:即使这里的max_size(row.den)定义为一个数字:它是否可能隐式转换为Bigint?