関数型はデータ型というものを非常に重視する。 データ型によって値をモデリングし、どういった性質のデータなのかを表現する。 更に型システムと組み合わせることでデータ型はさらなる力を得る。 型システムによってデータ型を抽象化するときに利用する型の一つにHigher Kinded Type(高階型)がある。 tsでは高階型は直接サポートされていないがそれをエンコードすることはできる。 この記事では高階型とはそもそも何なのか、それをTypeScriptでどの様に実現するかを説明する。 高階型とは 値 まずは馴染み深い値から始めよう。 値とは言ってしまえば生データのことである。 最も具体的な概念で、取り扱いやすい。 変数定義の右側を見るとただのデータで、馬鹿らしいほど理解しやすい。 当たり前じゃん、という感じだと思う。 仮に誰かにtシャツの値段を聞かれたとしよう。 それに5000円と答えると彼らはた
![TypeScriptとHigher Kinded Type(高階型) - k.dev](https://cdn-ak-scissors.b.st-hatena.com/image/square/ff0c125344f699b7324bd7d25adc9826f69a1965/height=288;version=1;width=512/https%3A%2F%2Fimages.ctfassets.net%2Fai4vjpehjr3j%2F7CQ3H6yV4XPw9jF1hp1Som%2F2c5a6f14f869e808253b270ca5494934%2Fdavisuko-2FdIvx7sy3U-unsplash.jpg)