Show HN: I made TypeScript's type inference more strict (and smarter)
3 points
17 hours ago
| 0 comments
| github.com
| HN
As a TypeScript developer, I often found myself wishing the type system could do more—*especially when omitting or modifying deeply nested properties* inside complex objects and arrays.

For instance, what if I want to remove a deeply nested field like `user.profile.email` and also something like `user.posts[].meta.shares` from a type?

TypeScript doesn't really provide a built-in way to do that.

So I built *DeepStrictTypes* — a utility that lets you *omit deeply nested keys*, even inside arrays, with full type inference and strictness.

Here’s an example:

```ts type Example = { user: { id: string; profile: { name: string; age: number; email: string; }; posts: { title: string; content: string; meta: { likes: number; shares: number; }; }[]; }; };

// Remove 'user.profile.email' and 'user.posts[].meta.shares' type Omitted = DeepStrictOmit< Example, 'user.profile.email' | 'user.posts[*].meta.shares' >; ```

The resulting type:

```ts { user: { id: string; profile: { name: string; age: number; }; posts: { title: string; content: string; meta: { likes: number; }; }[]; }; } ```

Works great for: - Cleaning up types for API responses - Dynamically transforming deeply nested data - Improving type safety when handling structured JSON

[https://github.com/kakasoo/deepstricttypes](https://github.com/kakasoo/deepstricttypes) Would love your feedback or ideas for improvements!

No one has commented on this post.