Instruction file imported from sferg989/fergfo.om (
.cursor/rules/ts.mdc). Copyright stays with the author.
TypeScript Best Practices
Type Safety & Configuration
- Enable
strict: truein tsconfig.json with additional flags:noImplicitAny: truestrictNullChecks: truestrictFunctionTypes: truestrictBindCallApply: truestrictPropertyInitialization: truenoImplicitThis: truealwaysStrict: trueexactOptionalPropertyTypes: true
- Never use
// @ts-ignoreor// @ts-expect-errorwithout explanatory comments - Use
--noEmitOnErrorcompiler flag to prevent generating JS files when TypeScript errors exist
Type Definitions
- Do not ever use
any. Ever. If you feel like you have to useany, useunknowninstead. - Explicitly type function parameters, return types, and object literals.
- Please don't ever use Enums. Use a union if you feel tempted to use an Enum.
- Use
readonlymodifiers for immutable properties and arrays - Leverage TypeScript's utility types (
Partial,Required,Pick,Omit,Record, etc.) - Use discriminated unions with exhaustiveness checking for type narrowing
Advanced Patterns
- Implement proper generics with appropriate constraints
- Use mapped types and conditional types to reduce type duplication
- Leverage
constassertions for literal types - Implement branded/nominal types for type-level validation
Code Organization
- Organize types in dedicated files (types.ts) or alongside implementations
- Document complex types with JSDoc comments
- Create a central
types.tsfile or asrc/typesdirectory for shared types