算术运算的右侧必须是 'any'、'number'、'bigint' 类型或枚举类型
The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type
我在 JS 中有这段代码,我需要让它在 TypeScript 中运行。
categoryAxis.renderer.labels.template.adapter.add("dy", function(dy, target) {
if (target.dataItem && target.dataItem.index & 2 == 2) {
return dy + 25;
}
return dy;
});
关于这个 2 == 2
我遇到了错误。
您的问题可能是 target.dataItem.index & 2
,我猜您指的是双符号:target.dataItem.index && 2
看起来 typescript 首先执行 2 == 2
,结果为 true
,然后 target.dataItem.index & true
,这是错误的。尝试添加括号 (target.dataItem.index & 2) == 2
.
如果这确实是您的 javascript :
target.dataItem && target.dataItem.index & 2 == 2
那就和
一样
target.dataItem && target.dataItem.index & (2 == 2)
target.dataItem && target.dataItem.index & true
true 将被 javascript 自动强制为 1
,但 TypeScirpt 不会隐式地这样做。
所以如果你这样写:
target.dataItem && target.dataItem.index & 1
或
target.dataItem && target.dataItem.index & +true
在 TypeScript 中,它编译并执行与上面相同的操作 javascript。
否则你的 javascript 已经错了,这里的其他答案之一已经建议你进行各种更正。
我在 JS 中有这段代码,我需要让它在 TypeScript 中运行。
categoryAxis.renderer.labels.template.adapter.add("dy", function(dy, target) {
if (target.dataItem && target.dataItem.index & 2 == 2) {
return dy + 25;
}
return dy;
});
关于这个 2 == 2
我遇到了错误。
您的问题可能是 target.dataItem.index & 2
,我猜您指的是双符号:target.dataItem.index && 2
看起来 typescript 首先执行 2 == 2
,结果为 true
,然后 target.dataItem.index & true
,这是错误的。尝试添加括号 (target.dataItem.index & 2) == 2
.
如果这确实是您的 javascript :
target.dataItem && target.dataItem.index & 2 == 2
那就和
一样target.dataItem && target.dataItem.index & (2 == 2)
target.dataItem && target.dataItem.index & true
true 将被 javascript 自动强制为 1
,但 TypeScirpt 不会隐式地这样做。
所以如果你这样写:
target.dataItem && target.dataItem.index & 1
或
target.dataItem && target.dataItem.index & +true
在 TypeScript 中,它编译并执行与上面相同的操作 javascript。
否则你的 javascript 已经错了,这里的其他答案之一已经建议你进行各种更正。