< blog ·

TypeScript in Vue without overengineering

How I type Vue and Nuxt in production: useful types, fewer nested generics, and what I skip on purpose.

I like TypeScript when it catches real bugs. I hate it when every prop becomes a three-level generic. In Vue I keep types next to the data: API responses, form models, a few shared domain types. Components stay thin.

Banking and data work taught me that “strict everywhere” isn't the same as “safe”. Strict mode helps. Clever type tricks usually just slow everyone down. If a type needs a comment to make sense, I rewrite the model.

I type the boundaries and leave the middle boring. For most Nuxt apps I ship, that's enough.