実現したいこと
「オブジェクトは 'undefined' である可能性があります。ts(2532)」のエラーが解決できない
前提
配列のデータをカテゴリーごとに分割して新しいオブジェクトを生成する
処理自体は完成したがTSのエラーが解消できない
発生している問題・エラーメッセージ
該当のソースコード
type BrandData = { brand: string color: string amount: number } type TransformedData = { [key: string]: { [key: string]: number[] } } const data: BrandData[] = [ { brand: 'aaa', color: 'red', amount: 1000, }, { brand: 'aaa', color: 'red', amount: 2000, }, { brand: 'bbb', color: 'blue', amount: 4000, }, ] const transformedData = data.reduce((acc, item) => { const { brand, color, amount } = item if (!acc[brand]) { acc[brand] = {} } if (!acc[brand][color]) { acc[brand][color] = [] } if (!acc[brand][color]?.includes(amount)) { acc[brand][color].push(amount) } return acc }, {} as TransformedData)
試したこと
1.anyの型を使用する
2.非nullアサーションを使用する
if (!acc[brand]![color]) {}
この2つの方法では解消できましたが、lintのエラーに引っかかってしまうため別の解消方法が必要です