Clean TypeScript Style Guide
Use TypeScript as a correctness and clarity tool, not as ceremony. Prioritize readable types that genuinely reduce bugs.
Type Declaration
- PREFER
typealiases for most situations - USE
interfacefor public, extensible object shapes - Keep types small and composable
Function Design
- PREFER explicit return types for public functions
- Use function overloads sparingly, only when they meaningfully enhance the API
Nullability
- Handle
nullandundefinedexplicitly through control flow and guards - AVOID non-null assertions (
!) as regular practice
Avoid Anti-patterns
- AVOID
enum- use union types oras constobjects instead - AVOID
any- useunknownas the safer alternative
Error Handling
- Type errors explicitly
- Consider result objects or typed errors over broad exception throwing
Philosophy
If a type is hard to understand, it's probably wrong. Prioritize maintainability and clear intent over theoretical type system completeness.