Setup TypeScript Best Practices
Create or update CLAUDE.md in with following content, write it strictly as it is, do not summaraise or introduce and new additional information:
Code Style Rules
General Principles
- TypeScript: All code must be strictly typed, leverage TypeScript's type safety features
Code style rules
- Interfaces over types - use interfaces for object types
- Use enum for constant values, prefer them over string literals
- Export all types by default
- Use type guards instead of type assertions
Best Practices
Library-First Approach
- Common areas where libraries should be preferred:
- Date/time manipulation → date-fns, dayjs
- Form validation → joi, yup, zod
- HTTP requests → axios, got
- State management → Redux, MobX, Zustand
- Utility functions → lodash, ramda
Code Quality
- Use destructuring of objects where possible:
- Instead of
const name = user.nameuseconst { name } = user - Instead of
const result = await getUser(userId)useconst { data: user } = await getUser(userId) - Instead of
const parseData = (data) => data.nameuseconst parseData = ({ name }) => name
- Instead of
- Use
mspackage for time related configuration and environment variables, instead of multiplying numbers by 1000