11 ポイント 投稿者 kakasoo 2025-03-13 | 10件のコメント | WhatsAppで共有

DeepStrictTypes は、ネストされたオブジェクトをより安全かつ便利に扱えるように作られた TypeScript ユーティリティ型のコレクションです。

既存の OmitPick では深くネストされたプロパティをきれいに処理しづらいですが、DeepStrictOmitDeepStrictPick を使えば、必要な部分だけを的確に取り出せます。

たとえば、{ user: { name: string; age: number } } 型で DeepStrictOmit<Example, 'user.name'> を使うと、{ user: { age: number } } のように正確に変形できます。逆に DeepStrictPick<Example, 'user.name'> を使えば、{ user: { name: string } } のように必要な部分だけを残すこともできます。

これがなぜ必要かというと、
✔️ API レスポンスから特定のフィールドだけをフィルタリングしたいとき
✔️ ネストされたオブジェクトで欲しい部分だけを残したいとき

試験的に deepStrictObjectKeysdeepStrictAssert のようなランタイムユーティリティも追加しています。

ぜひ一度使ってみて、フィードバックをもらえるとうれしいです。オープンソースへの関心は作者の力になります!

10件のコメント

 
metis041 2025-03-14

TypeScriptはいつだって激推しだ

 
kakasoo 2025-03-14

TypeScriptのすばらしさを知っているあなたに感謝します。

 
kakasoo 2025-03-14

ありがとうございます!

 
softer 2025-03-14

いいね

 
kakasoo 2025-03-14

いいねのおすすめ、ありがとうございます

 
sunrabbit 2025-03-13

ここまで極端に型を使う人がいるのかなと思いますが
実際の使用例が気になりますね

 
kakasoo 2025-03-13

私は広告ドメインで働いていたときによく使っていました... :)
Facebook、Google... ともあれ結局、広告ドメインは少しずつ違うだけで、ほとんど似たような型に抽象化できるので、異なるサービスを1つのドメインにまとめるときに使っていました。

 
wogns3623 2025-03-14

サーバーでDBデータのレコード型をあれこれ加工するとき、こういう形でよく使う気がします

 
kakasoo 2025-03-14

そうですね。実際、フロントエンドの方々にはあまり共感を得られなかったんですよね。