拡張子がtsxのファイル内で、型パラメータを持ったアロー関数を宣言する

小ネタ。

TypeScriptでは、アロー関数でジェネリック関数を定義できる。

const generic = <T>(value: T) => ...

拡張子が .ts のファイル内では問題ないが、 .tsx のファイル内でこの記法を用いると、 <T> がタグの開始とみなされ、以下のコンパイルエラーが発生する。

JSX 要素 'T' には対応する終了タグがありません。ts(17008)

別ファイルに分けるしかないかなと思って調べたところ、以下の記事を発見。

www.ashbyhq.com

記事の通り、型引数の後ろにカンマを付けると、エラーが解消された。

const generic = <T,>(value: T) => ...