オブジェクトの代わりに配列でオプションのチェーンを使用しようとしていますが、それを行う方法がわかりません:
これが私がmyArray.filter(x => x.testKey === myTestKey)?[0]
にしようとしていることです。
しかし、それはそのようなエラーを与えているので、配列でそれを使用する方法。
まあ、正しい構文を理解したとしても、コードは私にはあまり意味がありません。
上記のコードのオプションのチェーンは、myArray.filter(x => x.testKey === myTestKey)
の結果がnull
ではなくundefined
ではないことを確認しています(TS出力を確認できます)。しかし、とにかくそれは不可能です。なぜなら、filter
メソッドの結果は常にarray
だからです。 JavaScriptは「配列の境界を超えました」をスローしないため、インデックスにアクセスしようとしたときは常に安全です。この要素が存在しない場合はundefined
を取得します。
それを明確にするためのより多くの例:
const myArray: string[] = undefined
console.log(myArray.filter(x => x)?.[0]) //throws Cannot read property 'filter' of undefined
//in this example the optional chaining protects us from undefined array
const myArray: string[] = undefined
console.log(myArray?.filter(x => x)[0]) //outputs "undefined"