Add a static type system to JavaScript: annotations, inference, interfaces, unions, narrowing and generics.
TypeScript is JavaScript with a type system that runs before your code does. Instead of discovering that a value was undefined three screens away, the compiler tells you at the point you made the mistake. This course builds that foundation from first principles: what types are, how TypeScript infers them when you say nothing, how to describe the shape of your data with interfaces, how to model alternatives with unions, how narrowing turns a union into a precise type, and how generics let one function work for many types without falling back to any. By the end you will be able to read a typed codebase without guessing, and you will write functions that are hard to misuse.