TypeScript Is Worth It (Even for Small Projects)
Author
Navas
Published
December 14, 2025
Category
Development

I used to think TypeScript was overkill for quick builds. I was wrong. Here's why I use it everywhere now.
The sceptic's journey
I resisted TypeScript for a while. It felt like extra work - more syntax, more configuration, more things to get wrong. For small projects, surely JavaScript was fine?
Then I started maintaining projects six months after building them. Suddenly TypeScript made perfect sense.
What TypeScript actually gives you
Catch bugs before they run. That typo in a property name? Caught at compile time, not in production. That function you're calling wrong? The editor tells you immediately.
Documentation that updates itself. Types are documentation. When you hover over a function, you see exactly what it expects and returns. No hunting through code to understand the shape of your data.
Fearless refactoring. Rename a property? TypeScript shows you everywhere it's used. Change a function signature? Every call site that needs updating lights up red.
Better autocomplete. Your editor knows what's available. Fewer trips to documentation, fewer typos, faster coding.
The learning curve is smaller than you think
Here's the thing: you don't need to know all of TypeScript to benefit from it.
Start with type inference. Write normal JavaScript and let TypeScript figure out the types. Add explicit types only where needed.
Learn as you go. When TypeScript complains, that's a learning opportunity - usually it's catching a genuine issue you'd have missed otherwise.
Modern TypeScript is much friendlier than it was. Better error messages, smarter inference, sensible defaults. The experience has improved dramatically.
Where it's especially valuable
API responses. Define the shape of what your backend returns. Never wonder "wait, is it `user.name` or `user.username`?" again.
Database models. With Drizzle ORM, I get types auto-generated from my schema. The database and the code stay in sync automatically.
Component props. React components with proper prop types mean you can't pass the wrong data. Fewer runtime errors, clearer component contracts.
Form handling. Zod schemas validate at runtime and provide types at compile time. One definition, double the safety.
The setup I use
For new Next.js projects, TypeScript is the default. Just run `npx create-next-app@latest` and select TypeScript. Done.
Enable strict mode from the start. Yes, it's more demanding. That's the point. The compiler catching issues is better than users catching them.
VS Code or Cursor for editing - both have excellent TypeScript integration. Errors show inline, autocomplete works brilliantly, refactoring tools understand your types.
For existing projects
If you have a JavaScript project you want to migrate, do it gradually:
Enable `allowJs` so TypeScript files and JavaScript files can coexist. Rename files to `.ts` or `.tsx` one at a time. Add types where they provide value.
You don't need to convert everything at once. Partial TypeScript is better than no TypeScript.
The bottom line
TypeScript adds a small amount of friction upfront. But it removes a huge amount of friction over the life of a project.
Every client project I build uses TypeScript. Every personal project uses TypeScript. The consistency means I can jump between codebases without adjusting my mental model.
If you're still on the fence, just try it for your next project. The worst case is you'll learn something. The likely case is you'll never go back to plain JavaScript.