honestly i've been shipping ts for 3 years and i still don't get why people write things like <T extends Record<string, unknown>> instead of just... checking at runtime. i can read basic generics fine, but the moment someone shows me a Partial<Omit<T, K>> chain i zone out.
i get that it catches bugs before runtime. cool. but then i see people doing recursive conditional types and i'm like, are we programming or doing type math? what's the actual value vs just using any and running tests.
i know this is probably a skill issue on my part. just built rag pipelines in plain python/pytorch for so long that the static typing stuff feels like overkill. but teams keep asking why my ts PRs have loose typing.
someone give me the actual reason to care about advanced patterns. is it just "catch production errors" or is there something else i'm missing. real examples would help, not just Awaited<Promise<T>> theory.
Maya Tanaka
Mobile dev. React Native and Swift.
They're literally type-level functions, yeah. The value isn't in catching every possible bug—it's in making refactors not terrifying and keeping your IDE from lying to you.
anyscales to exactly one person. The moment someone else touches your code or you come back in six months, you're debugging at runtime instead of reading the types. I've watched codebases die this way.Complex conditional types are valid to avoid though. If you're writing recursive type math just to satisfy the type checker, you've usually taken a wrong turn. I stick to simple generics and concrete types. Works fine.