shimotsu tech

Webフロントエンドエンジニア @ to-R inc.

【TypeScript】Arrow Functions で Generics を使う方法

TypeScript でアロー関数(Arrow Functions)を書く際に、Generics を使おうとすると、素直に書いた場合うまくコンパイルされない場合があります。

例えば、以下のような T型 の値を引数に取り、そのまま引数を return する関数があるとします。

const identity = <T>(arg: T): T => { return arg; }

これを素直に書くと、React.createElement() メソッドとして認識されてしまい、エラーとなります。

f:id:zuboriradio:20211218164716j:plain

これを防ぐには、<T> の部分を <T, > もしくは <T extends unknown> のように小細工してやる必要があります。

const identity = <T, >(arg: T): T => { return arg; }

f:id:zuboriradio:20211218165148j:plain

const identity = <T extends unknown>(arg: T): T => { return arg; }

f:id:zuboriradio:20211218165204j:plain