TypeScriptでコンパニオンオブジェクト

全然知らなかったけど存在していた。classを使うことに捉われ過ぎていて気づけていなかった。

typescriptbook.jp

import { Rectangle } from "./rectangle";
 
const rec: Rectangle = Rectangle.from(1, 3);

上記サイトのソースコードを一部貼り付けたけど、型名と同じ名前.関数で呼ぶというのやりたかった。これができなかったら、型とは別名のオブジェクトかclassを作る発想しかなかった。。。

ちなみに、もちろん同名のclassは定義できなかった。classで型定義をしている時は使う発想がなかったけど、最近はtypeで型定義をすることが増えてきたので必要になった。

これで型と振る舞いを同じ名前で整理できる。ZodとかPrismaで型を定義した場合にコンパニオンオブジェクトを多用していくんだろうな。