【发布时间】:2019-05-03 04:03:16
【问题描述】:
我有这个数组类型:
interface Details {
Name: string;
URL: string;
Year: number;
}
interface AppState {
data: Details[];
}
我正在使用 D3 创建一个这样的 x 轴:
createChart = () => {
const { data } = this.state;
const width = 900,
height = 600;
// x-axis
const x = d3
.scaleLinear()
.domain([
d3.min(data, ({ Year }) => (Year ? Year - 1 : 0)), // ERROR
d3.max(data, ({ Year }) => (Year ? Year + 1 : 0)) // ERROR
])
.range([0, width]);
};
在使用d3.min 和d3.max 的标记行上出现以下错误:
键入'数字 | undefined' 不可分配给类型 'number | { valueOf():数字; }'。类型“未定义”不可分配给类型 '号码 | { valueOf(): 数字; }'。
我该如何进行这项工作?
【问题讨论】:
-
const {data} = this.state 在 createChart 中可能未定义。如果您确定数据永远不会未定义,解决方法是使用 d3.min(data as number, ....
标签: typescript d3.js