TypeScript Best Practices
SKILL.md
TypeScript Best Practices
Priority: P1 (OPERATIONAL)
Implementation Guidelines
- Naming: Classes/Types=
PascalCase, vars/funcs=camelCase, consts=UPPER_SNAKE. PrefixIonly if needed. - Functions: Arrows for callbacks; regular for exports. Always type public API returns.
- Modules: Named exports only. Import order: external → internal → relative.
- Async: Use
async/await, not raw Promises.Promise.all()for parallel. - Classes: Explicit access modifiers. Favor composition. Use
readonly. - Types: Use
neverfor exhaustiveness,assertsfor runtime checks. - Optional: Use
?:, not| undefined. - Imports: Use
import typefor tree-shaking.
Anti-Patterns
- No Default Exports: Use named exports.
- No Implicit Returns: Specify return types.
- No Unused Variables: Enable
noUnusedLocals. - No
require: Use ES6import. - No Empty Interfaces: Use
typeor non-empty interface. - No
any: NEVER useany. Force strict typing or useunknownwith explicit casting. - Mocking Strategy: In tests, use
jest.Mocked<T>and cast values usingvalue as unknown as Tto satisfy strict linting without compromising type safety. - NO LINT DISABLE: You are strictly PROHIBITED from using
eslint-disableorts-ignorecomments. Fix underlying issues.
Reference & Examples
See references/examples.md for code samples including:
- Immutable Interfaces
- Exhaustiveness Checking
- Assertion Functions
- Dependency Injection Patterns
- Import Organization
Related Topics
language | tooling | security