typescript TS2345:类型为“(number| undefined)[]不可分配给类型为“Iterable”的参数< NumberValue>

h5qlskok  于 2023-05-19  发布在  TypeScript
关注(0)|答案(1)|浏览(205)

我正在使用D3.js库为条形图的y轴创建刻度。yBar刻度是使用d3.scaleLinear()函数创建的,该函数返回一个将输入值Map到输出值的线性刻度。
下面是代码

let yBar = scaleLinear()
    .range([height, 0])
    .domain([0, d3Array.max(datasets, d => d3Array.sum([d.asia, d.usa, d.uk]))]);

但是typescript给出了错误:

TS2345: Argument of type '(number | undefined)[] is not assignable to parameter of type 'Iterable<NumberValue>'`
i34xakig

i34xakig1#

如果没有可比较的值,D3js的Array.max可以返回undefined,这就是为什么传递给.domain的数组类型是number | undefined
如果你知道你的数组永远不为空,一个选择是告诉Typescript返回类型是一个带有as的数字。

let yBar = scaleLinear()
    .range([height, 0])
    .domain([
        0,
        d3Array.max(datasets, d => d3Array.sum([d.asia, d.usa, d.uk])) as number
    ]);

相关问题