TIL : TypeScriptのジェネリクスについて

2020/01/08(Wed) - 21:54

ジェネリクスとは

まだ型として定義したくないものに対して利用することで、
型情報の決定を遅延する事ができる。

// ジェネリクスを持つインターフェース
interface ISample<T> {
    hoge: T
}

// 型情報注入用サンプルインターフェース
interface IHoge {
    email: string;
    password: string;
    age: number;
}

// 実装例1
// ISample<number>とするとTがnumber型として認識される
const hoge: ISample<number> = {
    hoge: 1
}

// 実装例2
// ISample<IHoge>とするとTがIHoge型として認識されるので
// hogeはemail, password, ageをプロパティとして持たなければならない
// 例えば下記 hoge: {} からemail,password,ageどれか一つでもかけてたりするとエラーが起きる
const hoge2: ISample<IHoge> = {
    hoge: {
        email: 'dmmm.com',
        password: '123456777',
        age: 18,
    }
}

// なお型情報はT以外でもいくつも指定する事が可能
interface IFuga<T, U> {
    hoge: T,
    fuga: U
}

カテゴリ