# Les 4: TypeScript Fundamentals --- ## Hoofdstuk **Deel 2: Technical Foundations** (Les 4-9) ## Beschrijving Introductie tot TypeScript: waarom het waardevol is, hoe je types schrijft, en de basis die nodig is om straks React/Next.js te typen. Deel 1 van 2 TypeScript-lessen. --- ## Te Behandelen ### Waarom TypeScript? (15 min) - Het probleem met JavaScript: runtime errors die je pas ziet als het te laat is - Live demo: JS vs TS in Cursor — zelfde code, maar TS vangt fouten vooraf - Voordelen: compile-time errors, betere autocomplete, zelf-documenterend, AI tools begrijpen getypte code beter - TypeScript is de standaard: Next.js, React, alles is TypeScript ### Basic Types & Type Inference (15 min) - Primitives: `string`, `number`, `boolean` - Arrays: `number[]`, `string[]`, `Array` - Type inference: TypeScript raadt types vaak zelf - Regel: annotate function parameters, laat TS de rest inferren ### Interfaces & Type Aliases (15 min) - Interfaces: beschrijven de shape van objecten - Optional properties met `?` - Type aliases: `type Status = "pending" | "approved" | "rejected"` - Union types en literal types - Interface vs Type: wanneer welke? ### Functies & Errors (10 min) - Function parameters en return types typen - Veelvoorkomende TypeScript errors lezen en oplossen - Hoe Cursor helpt met TypeScript errors (Cmd+K → fix) --- ## Tools - Cursor (Student Plan) - TypeScript - Node.js / ts-node --- ## Lesopdracht (75 min) ### TypeScript Escaperoom 🔐 Gamified TypeScript leerervaring met 8 "kamers" (puzzels): | Kamer | Concept | Moeilijkheid | |-------|---------|--------------| | 1 | Basic Types | ⭐ Makkelijk | | 2 | Type Inference | ⭐ Makkelijk | | 3 | Interfaces | ⭐⭐ Medium | | 4 | Optional Properties | ⭐⭐ Medium | | 5 | Union Types | ⭐⭐ Medium | | 6 | Type Aliases | ⭐⭐ Medium | | 7 | Functies Typen | ⭐⭐⭐ Moeilijk | | 8 | Boss Room (alles samen) | ⭐⭐⭐ Moeilijk | Studenten fixen TypeScript code in elke kamer. Als alles compiled, krijgen ze de escape code: **TYPE-SAFE-CODE-LOCK-OPEN-DOOR-FREE-DOM!** --- ## Huiswerk (2 uur) ### JS → TypeScript Converter Studenten krijgen een werkend JavaScript project (4 bestanden: users, products, orders, utils) en moeten alles omzetten naar TypeScript: - Interfaces schrijven voor alle objecten - Union types voor statussen en categorieën - Functies volledig typen - Geen `any` toegestaan - Tests (al in TypeScript) moeten slagen **Verificatie:** `npm run check` (0 errors) + `npm test` (alle tests groen) --- ## Leerdoelen Na deze les kan de student: - Uitleggen waarom TypeScript waardevol is voor developers - Basic types gebruiken (string, number, boolean, arrays) - Type inference begrijpen en toepassen - Interfaces en type aliases schrijven - Union types en literal types gebruiken - Optional properties en functies typen - TypeScript errors lezen en oplossen met Cursor