算术运算的右侧必须是 '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 已经错了,这里的其他答案之一已经建议你进行各种更正。