typescript
via PatrickJS/awesome-cursorrules
TypeScript coding standards and best practices for modern web development
What is typescript?
Establishes TypeScript conventions for type safety, naming, code organization, and error handling. Use this rule to enforce strict typing, proper interface/type usage, and modern patterns across a TypeScript codebase.
- Enforce strict TypeScript configuration and type system best practices (avoid any, prefer unknown, use generics)
- Define naming conventions: PascalCase for types, camelCase for variables, UPPER_CASE for constants, descriptive auxiliary verb patterns
- Organize code with co-located types, barrel exports, and dedicated type directories for shared definitions
- Require explicit return types on public functions and implement proper error handling with custom error types
- Apply design patterns including Builder, Repository, Factory, dependency injection, and discriminated unions for type safety
- Enforce immutability with readonly, type guards for runtime checking, and proper null/Promise rejection handling
Applies to
File patterns this rule matches.
Rule definition (reference)
Source of truth, from the repository.
TypeScript Best Practices
Type System
- Prefer interfaces over types for object definitions
- Use type for unions, intersections, and mapped types
- Avoid using
any, preferunknownfor unknown types - Use strict TypeScript configuration
- Leverage TypeScript's built-in utility types
- Use generics for reusable type patterns
Naming Conventions
- Use PascalCase for type names and interfaces
- Use camelCase for variables and functions
- Use UPPER_CASE for constants
- Use descriptive names with auxiliary verbs (e.g., isLoading, hasError)
- Prefix interfaces for React props with 'Props' (e.g., ButtonProps)
Code Organization
- Keep type definitions close to where they're used
- Export types and interfaces from dedicated type files when shared
- Use barrel exports (index.ts) for organizing exports
- Place shared types in a
typesdirectory - Co-locate component props with their components
Functions
- Use explicit return types for public functions
- Use arrow functions for callbacks and methods
- Implement proper error handling with custom error types
- Use function overloads for complex type scenarios
- Prefer async/await over Promises
Best Practices
- Enable strict mode in tsconfig.json
- Use readonly for immutable properties
- Leverage discriminated unions for type safety
- Use type guards for runtime type checking
- Implement proper null checking
- Avoid type assertions unless necessary
Error Handling
- Create custom error types for domain-specific errors
- Use Result types for operations that can fail
- Implement proper error boundaries
- Use try-catch blocks with typed catch clauses
- Handle Promise rejections properly
Patterns
- Use the Builder pattern for complex object creation
- Implement the Repository pattern for data access
- Use the Factory pattern for object creation
- Leverage dependency injection
- Use the Module pattern for encapsulation
Related rules
Senior full-stack TypeScript, React, Node.js guidance with clean architecture, testing, and WHY-oriented reasoning.
Quantitative factor research skills for designing, evaluating, and mining alpha factors in equities markets.
Android development with Jetpack Compose, clean architecture, and Material Design 3.
Angular development with Novo Elements UI library using standalone components.
Expert Angular 18 + TypeScript development with Jest, emphasizing clean code and performance.
Manage Kubernetes clusters, add-ons, stacks, and credentials via the Ankra CLI platform.