Lab 05: Performance Optimization
Step 1: Environment Setup
docker run -it --rm node:20-alpine sh
npm install -g typescript
mkdir lab05 && cd lab05Step 2: Understanding tsc --diagnostics
mkdir src
cat > src/index.ts << 'EOF'
export function greet(name: string): string {
return `Hello, ${name}!`;
}
export function add(a: number, b: number): number {
return a + b;
}
export interface User {
id: number;
name: string;
email: string;
createdAt: Date;
}
export class UserService {
private users: Map<number, User> = new Map();
create(name: string, email: string): User {
const id = this.users.size + 1;
const user: User = { id, name, email, createdAt: new Date() };
this.users.set(id, user);
return user;
}
findById(id: number): User | undefined {
return this.users.get(id);
}
getAll(): User[] {
return Array.from(this.users.values());
}
}
EOF
cat > tsconfig.json << 'EOF'
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"outDir": "dist"
},
"include": ["src"]
}
EOF
tsc --diagnosticsStep 3: skipLibCheck and isolatedModules
Flag
Speedup
Trade-off
Step 4: Incremental Builds
Step 5: Project References (composite: true)
Step 6: Avoiding Deep Recursive Type Performance Traps
Step 7: declaration Maps and Source Maps
Step 8: Capstone — Optimized tsconfig Template
Summary
Optimization
Config
Impact
Last updated
