DeepStrictTypes: 複雑なTypeScript型をもっと簡単に扱う
(github.com/kakasoo)DeepStrictTypes は、ネストされたオブジェクトをより安全かつ便利に扱えるように作られた TypeScript ユーティリティ型のコレクションです。
既存の Omit や Pick では深くネストされたプロパティをきれいに処理しづらいですが、DeepStrictOmit と DeepStrictPick を使えば、必要な部分だけを的確に取り出せます。
たとえば、{ user: { name: string; age: number } } 型で DeepStrictOmit<Example, 'user.name'> を使うと、{ user: { age: number } } のように正確に変形できます。逆に DeepStrictPick<Example, 'user.name'> を使えば、{ user: { name: string } } のように必要な部分だけを残すこともできます。
これがなぜ必要かというと、
✔️ API レスポンスから特定のフィールドだけをフィルタリングしたいとき
✔️ ネストされたオブジェクトで欲しい部分だけを残したいとき
試験的に deepStrictObjectKeys、deepStrictAssert のようなランタイムユーティリティも追加しています。
ぜひ一度使ってみて、フィードバックをもらえるとうれしいです。オープンソースへの関心は作者の力になります!
10件のコメント
TypeScriptはいつだって激推しだ
TypeScriptのすばらしさを知っているあなたに感謝します。
https://github.com/sindresorhus/type-fest
ありがとうございます!
いいね
いいねのおすすめ、ありがとうございます
ここまで極端に型を使う人がいるのかなと思いますが
実際の使用例が気になりますね
私は広告ドメインで働いていたときによく使っていました... :)
Facebook、Google... ともあれ結局、広告ドメインは少しずつ違うだけで、ほとんど似たような型に抽象化できるので、異なるサービスを1つのドメインにまとめるときに使っていました。
サーバーでDBデータのレコード型をあれこれ加工するとき、こういう形でよく使う気がします
そうですね。実際、フロントエンドの方々にはあまり共感を得られなかったんですよね。