typescript - 类型 'undefined' 不能赋值给类型 '(number | null)[]'
我有 TS 在抱怨这段代码:
const data = values?.map((item: PointDTO) => item.y);
const chartData: ChartData = {
labels,
datasets: [{ data }],
};
错误信息是:
Type '(number | undefined)[] | undefined' is not assignable to type '(number | ScatterDataPoint | BubbleDataPoint | null)[]'.
Type 'undefined' is not assignable to type '(number | null)[]'
所以我把我的代码改成了:
const data = values?.map((item: PointDTO) => item.y) ?? null;
但这并没有解决我的问题。
我该如何解决这个问题?
答案#1
假设以下这一行显示了错误:datasets: [{ data }], 你需要将示例的第一行改为以下内容:
const data = values?.map((item: PointDTO) => item.y).filter((y) => y !== undefined) ?? [];
变更说明:
- 如果
values变量被设置为 null,那么data最初将会被可选操作符赋值为undefined。通过在末尾添加?? []可以解决这个问题,这会将结果默认为一个空数组。 - 如果任何
item.y属性是undefined,data最初会被赋值为一个包含 undefined 值的数组,如[undefined, undefined, 1234, undefined]。通过.filter((y) => y !== undefined)可以修复这个问题,它会移除数组中所有的 undefined 条目,并将之前的结果更改为[1234]。
答案#2
您可能需要指定该变量是未定义的:
let dataPoint: DataPoint | undefined;
