10章ジェネリック

Variables you

declare in the type system?

A whole new (typed) world!

型システムの中で

宣言する変数?

まったく新しい(型付けされた)世界!

……………………………………………………

 

これまで学んできたすべての型の構文は、それが書かれた時点でコードの扱う型がわかっていることを想定しています。しかし、コードの一部分が、どのように呼び出されたかによって、さまざまな異なる型を扱うことを意図している場合もあります。

次に示すJavaScriptのidentity関数を考えてみましょう。この関数は、任意の型の入力を受け取り、それをそのまま出力として返すことを意図したものです。この関数のパラメーターの型と戻り値の型をどのように表現したらよいでしょうか?

function identity(input) {
    return input;
}

identity("abc");
identity(123);
identity({ quote: "I think your self emerges more clearly over time." });

inputany型と宣言することはできますが、そうすると、関数の戻り値の型もanyになってしまいます。

function identity(input: any) {
    return input;
}

let value = identity(42); // valueの型:any

inputがどんな値でも受け入れるとしたら、inputの型と関数が返す型の関係を表現する方法が必要です。TypeScriptでは、ジェネリック(generics)を使って、型同士の関係を表現します。 ...

Get 初めてのTypeScript ―型安全なJavaScriptでWeb開発を加速する now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.