typescriptの型シグネチャとオーバーロードとジェエリック型
function hello(text) {
return text
}
シグネチャとして型を抜き出す。
type hello = {
(text: string) => string;
}
でも1つの型しか扱えてなくて不便。
なので、オーバーロードでnumberにも対応
type hello = {
(text: string) => string;
(text: number) => number;
(text: object) => object;
}
なので、オーバーロードでnumberにも対応できたが、構造が不明なobject型には対応できない。
そこで、ジェネリック型を使って書き換える。
型指定の汎用性が高まる。
今回の例でいうTは一度推論されたらずっとその型を維持しようとする。
これが原因で型エラーになることも多々あるけどね。
<T>の<>はジェネリック型のパラメーター指定方法。
type hello = {
<T>(text: T) => T;
}