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

时间:2019-05-13 18:13:53

标签: 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++) {
            array.push(base + i * step);
          }
          return array;
        })(minTemp, maxTemp, legendColors.length)
      )
      .range(["red", "white", "green"]);

我在说范围时出错:

  

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

但是,如果您查看此link中的示例,我相信我的代码应该是正确的。我该如何解决?

1 个答案:

答案 0 :(得分:2)

好像您正在使用TypeScript。

您可能需要为d3.scaleThreshold()提供泛型,才能使其接受字符串。

DefinitelyTyped TypeScript type definitions for D3.js所述,

  
      
  • 构建新的阈值量表。必须根据相应泛型的类型来设置域和范围。      
        
    • 第一个泛型对应于域值的数据类型。
    •   
    • 第二个泛型对应于范围值的数据类型。
    •   
  •   

由于您同时为domainrange使用了字符串,因此我们可以将两种类型都指定为string

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

Reference