https://github.com/total-typescript/advanced-typescript-workshop
Matt's Advanced TypeScript workshop
https://github.com/total-typescript/advanced-typescript-workshop
Last synced: 2 days ago
JSON representation
Matt's Advanced TypeScript workshop
- Host: GitHub
- URL: https://github.com/total-typescript/advanced-typescript-workshop
- Owner: total-typescript
- Created: 2022-07-26T09:16:37.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-16T19:03:38.000Z (about 1 year ago)
- Last Synced: 2025-04-03T20:12:25.576Z (11 days ago)
- Language: TypeScript
- Homepage:
- Size: 78.1 KB
- Stars: 863
- Watchers: 20
- Forks: 135
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- jimsghstars - total-typescript/advanced-typescript-workshop - Matt's Advanced TypeScript workshop (TypeScript)
README
# Advanced TypeScript Workshop
Hello! My name's [Matt Pocock](https://twitter.com/mattpocockuk). This is a workshop repo to teach you about Advanced TypeScript.
## Topics Covered
- Using `typeof` and `as const` to derive types from runtime
- Generics
- Assertion functions & type predicates
- Template literal types
- Conditional types & `infer`
- Diagnosing type errorsThe plan of the workshop is to get you more confident with complex type signatures, less likely to want to use `any`, and faster at diagnosing errors.
## Workshop Plan
We'll be running from 9AM PT - 2PM PT. Here's the plan:
- 09:00-9:15: **Setup & Housekeeping**
- 09:15-10:30: **First session**
- 10:30-10:45: **Coffee Break**
- 10:45-12:00: **Second session**
- 12:00-12:30: **Lunch**
- 12:30-14:00: **Third session**We'll be working through the material in this repository, mostly in small groups.
## System Requirements
- git v2.14.1 or greater
- NodeJS v16.15.0 or greater
- npm v8.5.0 or greaterAll of these must be available in your `PATH`. To verify things are set up properly, you can run this:
```bash
git --version
node --version
npm --version
```## Setup
After you've made sure to have the correct things (and versions) installed, you should be able to just run a few commands to get set up:
```bash
git clone https://github.com/mattpocock/advanced-typescript-workshop.git
cd advanced-typescript-workshop
npm install
```That's it! You'll now have all the dependencies you need to work through the workshop exercises.
## Exercises
Exercises are in the [`./exercises`](./exercises) folder. They're designed to be worked through one after the other.
Each exercise follows a similar pattern:
- Look at the file with the `*.code.ts` extension. This gives you the code we're going to be working through and trying to understand.
- Read through the `*.exercise.ts` file. Read through the file, comment-by-comment, and follow the instructions by either editing the file inline, or editing the `*.code.ts` file.
- Wherever you see reference to `Solution #1`, check the `*.solutions.ts` file when you want to see the solution. **Make sure you check the solution before proceeding!** There's often crucial information there.Be careful to read through each part of the exercise carefully - if you skip over parts of them, it might get difficult to find your way back.
Also, consider **splitting your IDE into two panels**, both looking at the same file. You can read from one, and write in the other - meaning you don't have to scroll up and down too much.
### Emoji
Exercises use emoji to express various different things:
- 💡 - A new idea appears!
- 🛠 - Write some code!
- 🧑💻 - Your team lead has some thoughts...
- 🕵️♂️ - Time for an investigation...
- ⛔️ - Eek! A type error.
- ✅ - Hooray! The type error was fixed.
- 🚁 - Hover over something.
- 🔮 - Do a go-to-definition.## License
This material is available for private, non-commercial use under the [GPL version 3](http://www.gnu.org/licenses/gpl-3.0-standalone.html).