普通の配列と同じ感覚でTypedArrayを使っていたら、思わぬ形で引っかかってしまいました。
TypedArrayとは
JavaScriptが進化するに連れて、通信・画像・音声など巨大なバイナリデータを扱う場面も増えてきたので、そういったもののハンドリングに便利な、型やサイズを固定したUint8Array、Float32Arrayなどの配列オブジェクトが作れるようになっています。
なお、TypedArrayはこれらの総称、あるいは仕様書上ほかの内部的な名称で、ソースコードに直接TypedArrayと書くことは通常ありません。
実装されているメソッド
TypedArrayは固定長である以上、破壊的に長さを変更するような.pushや.spliceは存在しませんが、それ以外は.forEachや.reduce、.joinなど、通常の配列にあるメソッドもだいたい揃っています。
.mapの罠
その中に.mapも存在するのですが、mapした結果は 同じ型のTypedArray でなければならない、という大きな制約がついてきます。TypeScript+VSCodeで書いていたので型エラーとなりすぐに気付けたのですが、そうでなかったら気づかないままコードが思うように動かない、というハマりパターンに突っ込んでいたかもしれないです。
このような場合、Array.fromを活用できます。TypedArrayももちろんiterableですのでArray.fromの第1引数に渡せますし、第2引数に関数を渡せばmapのように動作をします([...typedArr].mapのように一時的にコピーした配列が作られることもありません)。