Implementing TypeScript in Node.js Projects for Enhanced Type Safety

Guidelines for adopting TypeScript in Node.js applications to improve code quality and maintainability through static typing.

0 likes
13 views

Rule Content

title: Implementing TypeScript in Node.js Projects for Enhanced Type Safety
description: Guidelines for adopting TypeScript in Node.js applications to improve code quality and maintainability through static typing.
category: Node.js Cursor Rules
globs:
  - "**/*.ts"
  - "**/*.tsx"
rules:
  - description: "Enable strict mode in TypeScript to catch more errors at compile time and enforce better coding practices."
    action: "Ensure 'strict' is set to true in tsconfig.json."
    trigger: "Presence of tsconfig.json without 'strict' set to true."
    outcome: "Improved code reliability and maintainability through stricter type checking."
  - description: "Use interfaces and types to define the shape of your data, improving code readability and catching type-related issues early."
    action: "Define interfaces for objects and types for unions, intersections, and other complex structures."
    trigger: "Usage of 'any' type where a more specific type can be defined."
    outcome: "Enhanced code clarity and early detection of type-related errors."
  - description: "Avoid using the 'any' type unless absolutely necessary to maintain type safety."
    action: "Replace 'any' with specific types or use type inference where possible."
    trigger: "Instances of 'any' type in the codebase."
    outcome: "Stronger type safety and reduced runtime errors."
  - description: "Follow consistent naming conventions for variables, functions, classes, and interfaces to improve code readability."
    action: "Use camelCase for variables and functions, and PascalCase for classes and interfaces."
    trigger: "Inconsistent naming conventions detected in the codebase."
    outcome: "Improved code readability and maintainability."
  - description: "Use a code formatter like Prettier to maintain a consistent code style across the project."
    action: "Integrate Prettier into the development workflow and configure it to format TypeScript files on save."
    trigger: "Unformatted code or inconsistent code style detected."
    outcome: "Consistent code style and reduced code review overhead."
  - description: "Separate database logic into its own layer to maintain a clean architecture."
    action: "Organize code into distinct layers, keeping database interactions separate from business logic."
    trigger: "Database logic found within service or controller layers."
    outcome: "Improved code modularity and easier maintenance."
  - description: "Use async/await for asynchronous code to make it more readable and maintainable."
    action: "Refactor callback-based or promise-based asynchronous code to use async/await syntax."
    trigger: "Presence of callback-based or promise-based asynchronous code."
    outcome: "More readable and maintainable asynchronous code."
  - description: "Implement proper error handling using try/catch blocks to build robust applications."
    action: "Wrap asynchronous operations in try/catch blocks and handle errors appropriately."
    trigger: "Asynchronous operations without error handling."
    outcome: "Enhanced application stability and user experience."
  - description: "Use generics to write reusable code that can work with multiple types."
    action: "Define generic functions and classes where applicable to increase code reusability."
    trigger: "Functions or classes that can benefit from generic types but are using specific types."
    outcome: "More flexible and reusable code."
  - description: "Set up ESLint with TypeScript-specific plugins to enforce coding standards and catch potential issues."
    action: "Configure ESLint with '@typescript-eslint/parser' and '@typescript-eslint/eslint-plugin'."
    trigger: "Absence of ESLint configuration or missing TypeScript-specific plugins."
    outcome: "Consistent code quality and early detection of potential issues."