我有 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;
但這并沒有解決我的問題。
請問我該如何解決?
uj5u.com熱心網友回復:
假設以下行是顯示錯誤的行:
datasets: [{ data }],您需要將示例的第一行更改為以下內容:
const data = values?.map((item: PointDTO) => item.y).filter((y) => y !== undefined) || [];
變更說明:
- 如果
values變數被設定為 null -data最初將被分配undefined給三元運算子。這可以通過|| []在末尾添加來解決,這會將結果默認為空陣列。 - 如果有任何
item.y屬性undefined,data則最初會分配一個包含未定義值的陣列,如下所示[undefined, undefined, 1234, undefined]。.filter((y) => y !== undefined)這是通過從陣列中洗掉任何未定義的條目并將先前的結果更改為 this來修復的[1234]。
uj5u.com熱心網友回復:
values?.****如果值為空values值(或),將回傳 undefined。這就是您獲得盡可能多的價值的原因。undefinednullundefined
但是您的資料應該是 type (number | ScatterDataPoint | BubbleDataPoint | null)[]。所以你必須回傳一個陣列:
const data = values?.map((item: PointDTO) => item.y) ?? []
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/449551.html
標籤:打字稿
