Files
fil/.ai-rulez/rules/typescript-conventions.md
Henrik Jess Nielsen b4c07d3693
All checks were successful
Deploy fil (kreuzberg) / deploy (push) Successful in 49s
Nomad changes
2026-06-01 23:40:55 +02:00

1.0 KiB

priority
priority
high
  • strict: true + noUncheckedIndexedAccess in tsconfig, never any — use unknown with type guards.
  • ESM imports only, const over let, as const for literals, interface over type for objects.
  • import type for type-only imports to avoid runtime overhead. Discriminated unions for type-safe state.
  • Formatting/linting: oxfmt + oxlint. Type checking: tsc --noEmit in CI.
  • Testing: vitest (80%+ coverage). Runtime validation at system boundaries with zod.
  • Error handling: discriminated unions for expected errors, throw only for unexpected.
  • Package manager: pnpm with pnpm-lock.yaml committed, build: tsup or esbuild.
  • Monorepo: workspace protocol (workspace:*), shared tsconfig base, pnpm-workspace.yaml.
  • Node.js: node: prefix for core modules, fetch over axios.
  • Security: pnpm audit for dependency CVE scanning. Zero tolerance for critical/high vulnerabilities.
  • Anti-patterns: non-null assertions (!), type assertions (as), enum (use unions), @ts-ignore.