TypeScript入門 第6回

TypeScript

TypeScript Generics入門【型を再利用する最強機能】

TypeScriptを学んでいると必ず出てくる機能があります。

Genericsジェネリクス

Genericsを理解すると

  • 再利用可能な関数が作れる
  • 型安全を保てる
  • ライブラリの理解が深まる

というメリットがあります。

この記事では

  • Genericsとは
  • 基本の書き方
  • 実務での使い方

を解説します。

Genericsとは?

型を後から指定できる仕組み

です。

つまり

どんな型でも使える関数

を作ることができます。

Genericsを使わない例

例えば次の関数です。

function echo(value: string): string {
  return value
}

この関数は

stringしか使えません

もし数値を使いたい場合

function echoNumber(value: number): number {
  return value
}

のように関数を増やす必要があります。

Genericsを使う

Genericsを使うと1つの関数で対応できます。

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

この

<T>

が Generics です。

使用例

echo<string>("hello")

echo<number>(123)

結果

hello
123

型を自由に指定できます。

型推論

実は型を書かなくてもTypeScriptが推論してくれます。

echo("hello")
echo(123)

推論結果

string
number

配列でのGenerics

配列でも使えます。

function first<T>(arr: T[]): T {
  return arr[0]
}

使用例

first([1,2,3])
first(["a","b","c"])

複数のGenerics

複数の型も定義できます。

function pair<T, U>(a: T, b: U) {
  return [a, b]
}

使用例

pair("age", 30)

結果

["age",30]

Genericsを使ったインターフェース

interfaceでも使えます。

interface Box<T> {
  value: T
}

使用例

const box: Box<number> = {
  value: 100
}

Genericsのメリット

1 再利用できる

function identity<T>(value:T):T

どんな型でも使える。

2 型安全

anyとは違い型チェックが行われます。

3 ライブラリでよく使われる

Reactや多くのライブラリでもGenericsが使われています。

Genericsの実例

TypeScriptのArrayも実はGenericsです。

Array<number>
Array<string>

つまり

let numbers: Array<number>

と書くこともできます。

まとめ

Genericsとは

型を後から指定できる仕組み

です。

基本形

function func<T>(value:T):T

これを使うことで

  • 再利用可能なコード
  • 型安全な関数

を書くことができます。

Genericsは

TypeScriptで最も重要な機能の1つです。

次回は、TypeScript Utility Types

コメント

タイトルとURLをコピーしました