Learn JavaScript & TypeScript from zero
The language foundation every other course on this site assumes you already have — core JavaScript from values and functions through closures, objects and async, then TypeScript's type system and everyday tooling, ending with a small typed project you build yourself. All 14 weeks are live, start to finish.
Prerequisites & tooling
What you should already know
- Nothing — this course assumes zero prior programming experience
- Basic comfort using a computer: installing software, working with files and folders
- Willingness to install a code editor and a terminal-based tool or two along the way
Stack you'll work with
Everything here is free, and every tool carries straight into this site's Angular, React and Node.js & Express courses.
The full 14-week roadmap
Eight phases, from your first variable through closures and async JavaScript, to TypeScript's type system and a small typed capstone. All 14 weeks are live — start with Week 1 and work straight through to a real, tested TypeScript project.
JavaScript Values, Types & Operators
Write and reason about your first real JavaScript, starting from what a value actually is.
- Primitive types,
typeof, andlet/const/var - Operators, type coercion & template literals
- Control flow:
if/elseandswitch
Functions, Scope & Hoisting
Learn the three ways to write a function, and where a variable actually lives.
- Function declarations, expressions & arrow functions
- Default & rest parameters
- Block vs. function scope, and what hoisting actually does
Closures & Lexical Scope
Why an inner function keeps working after its outer function has already returned.
- Closures: what they are and why they matter
- Lexical scoping & the scope chain
- The classic
var-in-a-loop pitfall, and IIFEs
this, Objects & Classes
The other idea that trips up almost everyone coming from another language.
- How
thisis actually determined at call time call,apply,bind& the prototype chain- Class syntax: constructors, methods &
extends
Arrays & Array Methods
Stop writing manual loops — reach for the array methods that do the job instead.
map,filter&reducefind,some,every& sort with a comparator- Chaining array methods into a readable pipeline
Functions as Values & Immutability
Functions in JavaScript are values, just like numbers or strings — and mutation is a bug waiting to happen.
- Functions as first-class values & higher-order functions
- Immutability patterns with spread syntax
- A first look at currying & composition
Callbacks, the Event Loop & Promises
How JavaScript waits on slow things without freezing — and the object that represents "not ready yet."
- The call stack, callbacks & callback hell
- The event loop & task queue
- Promises: creating, consuming & chaining
async/await & Error Handling
Async code that finally reads top to bottom, plus the mistakes that catch almost everyone at first.
async/awaitsyntax, built on Promises- Real error handling with
try/catch - Awaiting multiple Promises the right way
Modern ES6+ & Modules
The syntax that shows up in essentially every modern JS codebase.
- Destructuring, spread & rest
- Optional chaining & nullish coalescing
- ES modules:
import/exportin the browser & Node
The DOM & Runtime Basics
Put JavaScript to work in a browser, and see what Node adds outside one.
- Selecting & updating elements, handling events
fetch& working with a real API- What Node.js's runtime gives you that a browser doesn't
TypeScript Setup & Basic Types
Add a type system on top of everything learned so far, and let the compiler catch real bugs.
tsconfig.json, basic types & type inference- Typing function parameters & return values
anyvs.unknown, and when inference is enough
Interfaces & Type Aliases
Typing the shape of real data — objects, API responses, and everything in between.
- Interfaces, type aliases & when to use which
- Optional & readonly properties
- Union & intersection types
Generics, Utility Types & Narrowing
Write genuinely reusable typed code instead of retyping the same shape repeatedly.
- Generic functions & interfaces
- Utility types:
Partial,Pick,Omit&Record - Type narrowing, type guards & enums
Tooling, Testing & Capstone
Wire up a real project setup, write your first tests, and ship a small typed capstone.
- npm scripts, ESLint & a bundler, briefly
- Writing your first unit tests with Vitest
- Capstone: a small, tested, fully-typed TypeScript project