---
name: TypeScript Tooling
description: Development tools, linting, and build configuration for TypeScript projects.
metadata:
labels: [tooling, typescript, eslint, prettier, testing]
triggers:
files: ['tsconfig.json', '.eslintrc.*', 'jest.config.*', 'package.json']
keywords: [eslint, prettier, jest, vitest, build, compile, lint]
---
# TypeScript Tooling
## **Priority: P1 (OPERATIONAL)**
Essential tooling for TypeScript development and maintenance.
## Implementation Guidelines
- **Compiler**: `tsc` for CI. `ts-node`/`esbuild` for dev.
- **Lint**: ESLint + `@typescript-eslint`. Strict type checking.
- **Format**: Prettier (on save + commit).
- **Test**: Jest/Vitest > 80% coverage.
- **Build**: `tsup` (libs), Vite/Webpack (apps).
- **Check**: `tsc --noEmit` in CI.
## Anti-Patterns
- **No Disable**: Avoid `// eslint-disable`.
- **No Skip**: Avoid `skipLibCheck: true` if possible.
- **No Ignore**: Use `@ts-expect-error` > `@ts-ignore`.
## ESLint Configuration
### Strict Mode Requirement
**CRITICAL**: Every file in the project, including tests (`.spec.ts`), must adhere to strict type-checked rules. NEVER turn off `@typescript-eslint/no-explicit-any` or `no-unsafe-*` rules.
### Common Linting Issues & Solutions
#### Request Object Typing
**Problem**: Using `any` for Express request objects or creating duplicate inline interfaces.
**Solution**: Use the centralized interfaces in `src/common/interfaces/request.interface.ts`.
```typescript
import { RequestWithUser } from 'src/common/interfaces/request.interface';
```
#### Unused Parameters
**Problem**: Function parameters marked as unused by linter.
**Solution**: Prefix the parameter with an underscore (e.g., `_data`) or remove it. NEVER use `eslint-disable`.
#### Test Mock Typing
**Problem**: Jest mocks triggering unsafe type warnings when `expect.any()` or custom mocks are used.
**Solution**: Cast the mock or expectation using `as unknown as TargetType`.
```typescript
mockRepo.save.mockResolvedValue(result as unknown as User);
```
## Configuration
```json
// tsconfig.json
{
"compilerOptions": {
"strict": true,
"noImplicitReturns": true,
"noUnusedLocals": true
}
}
```
## Reference & Examples
For testing configuration and CI/CD setup:
See [references/REFERENCE.md](references/REFERENCE.md).
## Related Topics
best-practices | language