Typescript d3 v5 scaleThreshold不接受范围上的字符串颜色数组?

Typescript d3 v5 scaleThreshold不接受范围上的字符串颜色数组?,typescript,d3.js,Typescript,D3.js,这是我的代码: var legendThreshold = d3 .scaleThreshold() .domain( (function(min, max, count) { var array = []; var step = (max - min) / count; var base = min; for (var i = 1; i < count; i++) {

这是我的代码:

var legendThreshold = d3
      .scaleThreshold()
      .domain(
        (function(min, max, count) {
          var array = [];
          var step = (max - min) / count;
          var base = min;
          for (var i = 1; i < count; i++) {
            array.push(base + i * step);
          }
          return array;
        })(minTemp, maxTemp, legendColors.length)
      )
      .range(["red", "white", "green"]);
var legendsthreshold=d3
.scaleThreshold()文件
.域名(
(功能(最小、最大、计数){
var数组=[];
变量步长=(最大-最小)/计数;
var基数=最小值;
对于(变量i=1;i
我在靶场上得到一个错误,说:

“string[]”类型的参数不能分配给类型的参数 '只读编号[]'


但是如果你看一下本文中的示例,我相信我的代码应该是正确的。如何修复此问题?

似乎您正在使用TypeScript

您可能需要为
d3.scaleThreshold()
提供泛型,以便它接受字符串

正如上面提到的

  • 构造一个新的阈值尺度。域和范围必须设置为对应于相应泛型的类型。
    • 第一个泛型对应于域值的数据类型
    • 第二个泛型对应于范围值的数据类型
由于您对
范围
都使用字符串,因此我们可以将这两种类型指定为
字符串

d3.scaleThreshold<string, string>().domain().range()
d3.scaleThreshold().domain().range()

我刚刚试过,但还是有错误,因为我说:“没有重载需要1类型的参数,但是确实存在期望0或2类型参数的重载。”@iamgpbaculio抱歉,应该是
。第一个泛型对应于域值的数据类型,第二个泛型对应于范围值的数据类型。您的范围返回字符串,但我可以再次检查您的域是否返回字符串或数字吗?