DEV Community

Cover image for 10 TypeScript Habits Every JavaScript Developer Should Build 🚀
Gouranga Das Samrat
Gouranga Das Samrat

Posted on

10 TypeScript Habits Every JavaScript Developer Should Build 🚀

TypeScript isn’t just another tool — it’s your debugging assistant, documentation system, and code safety net rolled into one.
If you’re a JavaScript developer looking to become more confident and productive, these
10 TypeScript habits will change the way you code forever.

1. Start with strict: true

Always enable _strict_ mode in your _tsconfig.json_.
It enforces all the best safety checks, helping you catch undefined values, missing properties, and incorrect types early in development.

2. Define Interfaces, Not Just Types

While both serve similar purposes, interfaces are extendable and perfect for defining object structures and contracts.
Use interfaces when modeling data or designing APIs — it makes your code scalable and easier to maintain.

3. Avoid any at All Costs

Using _any_ defeats the purpose of TypeScript.
Instead, try using
unknown, never, or union types depending on the context.
Remember: every
_any_ is a potential runtime bug waiting to happen.

4. Use Utility Types like Pick, Omit, and Partial

TypeScript’s built-in utility types help you transform existing types efficiently.
They make your code DRY and reduce repetitive type definitions.

type User = { id: number; name: string; email: string };
type PartialUser = Partial<User>; // All fields optional
Enter fullscreen mode Exit fullscreen mode

5. Narrow Types Using Type Guards

Type guards like _typeof_, _instanceof_, and custom checks allow you to safely narrow down union types.
They make your logic more predictable and error-free.

function isString(value: unknown): value is string {
  return typeof value === "string";
}
Enter fullscreen mode Exit fullscreen mode

6. Type Your Function Returns Explicitly

Always define your function return types.
It improves clarity and prevents unexpected behavior when refactoring or updating logic later.

function getUser(): User {
  // ...
}
Enter fullscreen mode Exit fullscreen mode

7. Use Enums for Readable Constants

Instead of magic strings or numbers, use Enums to represent fixed sets of values.They make your code more readable and reduce the risk of typos.

enum Role {
  Admin = "ADMIN",
  User = "USER",
}
Enter fullscreen mode Exit fullscreen mode

8. Leverage Generics for Reusable Logic

Generics let you write flexible, reusable code while maintaining strong typing.
Perfect for reusable components, API handlers, and utility functions.

function identity<T>(value: T): T {
  return value;
}
Enter fullscreen mode Exit fullscreen mode

9. Always Type API Responses

Never trust external data blindly.
Create interfaces or types that describe your API response structure — it prevents unexpected crashes when APIs change.

interface ApiResponse {
  success: boolean;
  data: User[];
}
Enter fullscreen mode Exit fullscreen mode

10. Let TypeScript Infer — Don’t Over-Type

TypeScript’s inference engine is powerful.
Let it do the heavy lifting where it can, and only add explicit types when it improves readability or prevents ambiguity.

đź’ˇ Final Thought

TypeScript isn’t about writing more code — it’s about writing safer, smarter, and more predictable code.
Start with small steps, follow these habits consistently, and you’ll save
hours of debugging while writing cleaner code.

🙏 Stay Connected!

Follow my blog for actionable tips and insights to crack your next interview!

Top comments (0)