3
Module 3
Engineering hygiene
Git and GitHub. Modern JS and TypeScript. The discipline that lets you change code without losing it.
Module roadmap
2 chapters ยท 36 lessons
Git and GitHub
Ch 819 lessons
Three trees, branches, rebase vs merge, PRs as a social artifact, conflicts as a routine event. The discipline that lets you change code without losing it.
- 8.0Orientation: why this chapter exists
- 8.1Why version control exists (and what you did before Git without realising)
- 8.2Installing Git, configuring your name and email
- 8.3`git init` and what a repo is
- 8.4The three trees: working directory, index, HEAD
- 8.5`git add`, `git commit`, `git log`
- 8.6`git status` and `git diff`: the two commands you'll run a million times
- 8.7Writing commits that future you can read
- 8.8Branching, switching, `git switch -c`
- 8.9Merging (fast-forward vs three-way)
- 8.10Rebasing โ and when each is correct
- 8.11Remotes: `git remote`, `origin`, push and pull
- 8.12GitHub: account setup, SSH keys, creating a repo
- 8.13Pull requests as a social artifact, not a Git feature
- 8.14Merge conflicts as a normal event, not an emergency
- 8.15`.gitignore` and what never to commit
- 8.16Tags, releases, and `git revert`
- 8.17Recovering from mistakes: `git reflog`, `git restore`, `git reset`
- 8.assignShip the to-do app to GitHub
Modern JavaScript and TypeScript
Ch 917 lessons
Types are descriptions, not enforcement. Narrowing, generics, unknown vs any vs never. The tool that catches errors before they reach a user.
- 9.0Orientation: why this chapter delivers TypeScript, not just modern JS
- 9.1Why TypeScript exists (the problem JS leaves you with)
- 9.2Installing TS, tsconfig.json for beginners
- 9.3Types are descriptions, not enforcement
- 9.4Primitive types and the literal-types trick
- 9.5Object types, optional properties, readonly
- 9.6Arrays, tuples, and the index signature
- 9.7Functions: parameter types, return types, function types
- 9.8Unions and intersections
- 9.9Narrowing: typeof, instanceof, in, discriminated unions
- 9.10interface vs type (and when to use each)
- 9.11unknown vs any vs never
- 9.12Generics, gently โ three worked examples
- 9.13Utility types: Partial, Pick, Omit, Record, ReturnType
- 9.14Modern ES features worth using daily: destructuring, spread, optional chaining, nullish coalescing
- 9.15Type-driven development in practice
- 9.assignConvert the to-do app to strict TypeScript with zero any