TypeScript の型のみで世界一型の厳しいプログラミング
BRANK

はじめにTypeScript の型は世界一自由度の高い設計になっていると思います。その根拠として、型を関数型のように書けるというのが大きいと思います。type Trim<S extends string> = S extends ` ${infer R}` `${infer R} ` ? Trim<R> : S; 例えば、これは文字列の両端から空白を取り除く、str.trim() 相当のジェネリクスを含んだ型です。 (ジェネリクスは、型で用いられる引数のような存在だと思って貰えれば大丈夫です。)実際に見てみましょう。TypeScript Playground(この記事では、TypeScript v5.8 を使用します。)しっかり、str.trim() 相当の処理が型のみで推論できていることが分かります。こんな事をここまで簡単に出来る言語は、TypeScript ぐらいではないでしょうか?勿論自由に出来るということは厳しく出来るということです。ただ、「何となく言いたいことは分かったけど、この型がどういう動作してこうなってるのかなんも分からん。」という方も居ると思います。なので、この Trim 型が何を行っているかを実際に説明していきます。Trim 型の中で何が起きているのか?さて、先ほど紹介した Trim<S> 型ですが、内部では以下のような4つの要素が組み合わさっ…

zenn.dev
Related Topics: TypeScript