Javascript D3.js v5域()未为数组获取变量

Javascript D3.js v5域()未为数组获取变量,javascript,angular,typescript,d3.js,Javascript,Angular,Typescript,D3.js,在我使用D3V5的Angular 5项目中,如果我给出以下内容,代码将编译: let y0 = d3.scaleLinear().domain([0, 100000]).range([this.height, 0]); 但是,如果我为我的域的上限和下限提供以下变量名,我会得到一个错误: let y0 = d3.scaleLinear().domain([d3.min(data.totalCount), d3.max(data.totalCount)]).range([this.height,

在我使用D3V5的Angular 5项目中,如果我给出以下内容,代码将编译:

let y0 = d3.scaleLinear().domain([0, 100000]).range([this.height, 0]);
但是,如果我为我的域的上限和下限提供以下变量名,我会得到一个错误:

let y0 = d3.scaleLinear().domain([d3.min(data.totalCount), d3.max(data.totalCount)]).range([this.height, 0]);
错误:TS2345:类型为“string[]”的参数不能分配给类型为“number |或({valueOf():number;})[]”的参数。类型“string”不能分配给类型“number”或{valueOf():number;}

我知道d3.min和d3.max的参数是数字,如果我提供一个数字的测试数组,
test=[1,2,3,4]
,我会得到相同的错误

为什么它试图将这些变量作为字符串读取?我做错了什么?

d3.min()实际上有四个:


旁注与您的问题没有直接关系:您可以在一次调用中使用which组合
d3.min()
d3.max()

let y0 = d3.scaleLinear()
  .domain(d3.extent<number>(data.totalCount))
  .range([this.height, 0]);
设y0=d3.scaleLinear()
.域(d3.范围(数据.总计数))
.范围([this.height,0]);

如果必须显式传递类型参数,则通常表示您做错了什么。如果是这种情况,那么声明的顺序可能不正确。这是有效的。非常感谢!我的主管希望使用的v5版本的转换,导致缺乏足够的知识库来正确使用,而且官方文档还不容易被库中的新手使用。在d3.max()中指定解决了其中一个问题。
let y0 = d3.scaleLinear().domain([
  d3.min<number>(data.totalCount), 
  d3.max<number>(data.totalCount)
]).range([this.height, 0]);
let y0 = d3.scaleLinear()
  .domain(d3.extent<number>(data.totalCount))
  .range([this.height, 0]);