Theme
SD MILIEU

2021-10-10

[TypeScript] ジェネリクスの書き方メモ

ジェネリクスに関して <T> はどこに書けば良いんだっけ?と(主に関数で)よくなるのでまとめておく。

関数

const func = <T>(value: T) => {
    return value
}
const func: <T>(value: T) => T = value => {
    return value
}

function func<T>(value: T) {
    return value
}

関数は常に仮引数の前と覚えておけばいい。

注意として、TSXファイルの場合は = の後ろに <> を書くと「お、HTMLタグか?」とコンパイラが誤解してしまうので以下のように書く必要がある。

const func = <T, _>(value: T) => {
    return value
}
// カンマだけでもいい
const func: <T,>(value: T) => T = value => {
    return value
}

type Props<T> = {
    value: T
}

クラス

class SomeClass<T> {
  constructor(private value: T) {}

  getValue(): T {
    return this.value;
  }
}

インターフェース

interface SomeInterface<T> {
  value: T;
}

参考記事

https://zenn.dev/nash/articles/51eb559f6637a0

https://qiita.com/suin/items/fa7184b9bc916ef5a6ac

https://qiita.com/k-penguin-sato/items/9baa959e8919157afcd4