かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

TypeScript .tsx に ジェネリクスを使う関数を定義しようとしてハマった

ざっくりしたアプリを作っていて .tsx ファイル内にジェネリクスを使用した関数を作成したら Type Error になって謎… となったのでメモ

.tsxジェネリクスを使った関数を定義したらエラーになった

const buildChunkArray = <T>(array: T[], size: number = 10): T[][] => {
  const chunks: T[][] = [];
  for (let i = 0; i < array.length; i += size) {
    chunks.push(array.slice(i, i + size));
  }

  return chunks;
};

const buildChunkArray = <T>(array: T[], size: number = 10): T[][] => {
👉️ ERROR : unclosed `T` tag / JSX 要素 'T' には対応する終了タグがありません。

.tsx では <T><T,> にする必要がある

- const buildChunkArray = <T>(array: T[], size: number = 10): T[][] => {
+ const buildChunkArray = <T,>(array: T[], size: number = 10): T[][] => {
  const chunks: T[][] = [];
  for (let i = 0; i < array.length; i += size) {
    chunks.push(array.slice(i, i + size));
  }

  return chunks;
};

tsx ファイルでは <, > で囲われたものは タグだと解釈されるのが原因だと思うが、, 入れればOKって Tips すぎるじゃんよー


[参考]