TypeScript Development
Type Checking
# Check types without emitting
npx tsc --noEmit
# Watch mode
npx tsc --noEmit --watch
Testing
# Run all tests
npm test
# Run with coverage
npm test -- --coverage
# Run in watch mode
npm test -- --watch
# Run specific test
npm test -- --testPathPattern=module.test
Linting
# Run eslint
npm run lint
# Fix auto-fixable issues
npm run lint -- --fix
# Type-aware linting (if configured)
npx eslint --ext .ts,.tsx src/
Formatting
# Format with prettier
npm run format
# Check without changing
npx prettier --check .
Project Structure
project/
├── src/
│ ├── index.ts
│ ├── types.ts
│ └── module.ts
├── tests/
│ └── module.test.ts
├── package.json
├── tsconfig.json
└── README.md
tsconfig.json Template
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"declaration": true,
"outDir": "./dist",
"rootDir": "./src"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
package.json Scripts
{
"scripts": {
"build": "tsc",
"test": "jest",
"lint": "eslint src/",
"format": "prettier --write .",
"typecheck": "tsc --noEmit",
"check": "npm run typecheck && npm run lint && npm run test"
}
}
TDD Cycle Commands
# RED: Write test, run to see it fail
npm test -- --testPathPattern=new_feature
# GREEN: Implement, run to see it pass
npm test -- --testPathPattern=new_feature
# REFACTOR: Clean up, ensure tests still pass
npm run check
Converted and distributed by TomeVault — claim your Tome and manage your conversions.