
Learn TypeScript
JavaScript with types. TypeScript catches your bugs before you run the code, gives you smarter autocompletion, and makes large codebases maintainable. It is the standard for modern web development.
TypeScript at a Glance
Same JavaScript you know β but with types that protect you from runtime errors.
// Explicit type annotations
let name: string = "Alice";
let age: number = 25;
let isStudent: boolean = true;
// TypeScript infers the type from the value
let city = "Cape Town"; // inferred: string
let score = 95; // inferred: number
// Union types β can be one OR the other
let id: string | number = "user_123";
id = 456; // also valid!
// Function with typed parameters
function greet(name: string, age: number): string {
return `Hello ${name}, you are ${age} years old.`;
}
console.log(greet("Alice", 25));$ ts-node types.ts
Hello Alice, you are 25 years old.
interface User {
id: number;
name: string;
email: string;
age?: number; // optional
readonly role: string; // cannot be changed
}
function displayUser(user: User): void {
console.log(`[${user.role}] ${user.name}`);
console.log(`Email: ${user.email}`);
if (user.age) {
console.log(`Age: ${user.age}`);
}
}
const alice: User = {
id: 1,
name: "Alice",
email: "alice@example.com",
age: 25,
role: "admin",
};
displayUser(alice);$ ts-node interfaces.ts
[admin] Alice Email: alice@example.com Age: 25
// Generic function β works with any type
function firstItem<T>(arr: T[]): T | undefined {
return arr[0];
}
const firstNum = firstItem([10, 20, 30]);
const firstStr = firstItem(["apple", "banana"]);
console.log(firstNum); // 10
console.log(firstStr); // "apple"
// Generic interface
interface ApiResponse<T> {
data: T;
success: boolean;
message: string;
}
const response: ApiResponse<User> = {
data: { id: 1, name: "Bob", email: "b@b.com", role: "user" },
success: true,
message: "User fetched",
};
console.log(response.data.name);$ ts-node generics.ts
10 apple Bob
What You'll Learn
Six modules from basic types all the way to generics and advanced patterns.
Types & Variables
- Primitive types β string, number, boolean
- Type annotations
- Type inference
- Union types and any
Functions & Types
- Typed parameters and return types
- Optional and default parameters
- Function overloads
- Arrow functions
Objects & Interfaces
- Object type annotations
- interface keyword
- Optional properties (?)
- Readonly properties
Classes & OOP
- Class syntax and constructors
- Access modifiers (public/private)
- Extends and implements
- Abstract classes
Generics
- Generic functions
- Generic interfaces
- Constraints with extends
- Utility types (Partial, Pick, Omit)
Advanced Types
- Type aliases
- Enums
- Type guards
- Intersection types

Explore the Web Front-End category
TypeScript works with all major frameworks. Use it with React, Vue or Angular to build fully type-safe web applications. Also explore plain JavaScript if you are still learning the basics.
Frequently Asked Questions
What is TypeScript?
TypeScript is a superset of JavaScript developed by Microsoft. It adds static type annotations to JavaScript, which means you declare what type of data a variable holds. The TypeScript compiler checks your types and catches errors before you even run the code, then compiles to plain JavaScript that runs anywhere.
Do I need to know JavaScript before TypeScript?
Yes β TypeScript builds on JavaScript. You should understand JavaScript basics (variables, functions, arrays, objects, classes) before diving into TypeScript. If you are brand new to programming, start with our JavaScript tutorial first.
Is TypeScript hard to learn?
Not if you already know JavaScript. TypeScript adds a layer on top β mainly type annotations. You can start very simply by just adding : string or : number to your existing variables. The advanced features like generics and utility types come later as you need them.
Does TypeScript replace JavaScript?
No β TypeScript compiles to JavaScript. Browsers and Node.js do not run TypeScript directly. You write TypeScript, the compiler converts it to JavaScript, and then that JavaScript runs. TypeScript is a development tool, not a separate runtime.
Where is TypeScript used?
TypeScript is used in almost every major web frontend. React, Angular (which uses TypeScript by default), Vue 3, Next.js, and NestJS all support TypeScript natively. Companies like Microsoft, Google, Airbnb, Slack, and Asana use TypeScript across their entire frontend codebases.
Ready to add types to your code?
Free. No signup. No downloads. Just start.
Start Learning TypeScriptNo account required Β· Always free
The Story of TypeScript
Real history, real companies, and an honest look at where TypeScriptshines and where it doesn't β not just a feature list.
Where it came from
TypeScript was released by Microsoft in 2012, led by Anders Hejlsberg β the same engineer who designed C# and Turbo Pascal. It was built to address a specific pain point at Microsoft and beyond: JavaScript codebases at scale (thousands of files, dozens of engineers) became fragile because there was no way to catch type-related mistakes before running the code.
How itβs actually used today
TypeScript has become the default choice for serious front-end and full-stack JavaScript projects β Angular is built in it, most large React codebases use it, and companies like Slack, Airbnb and Asana have migrated large parts of their codebase to it specifically to reduce production bugs. The Visual Studio Code editor itself is written primarily in TypeScript.
Strengths & trade-offs
The benefit is real: type errors get caught while you're writing code, not after a user hits them in production. The cost is a small amount of extra syntax and a compile step β for tiny scripts or quick prototypes, plain JavaScript is still often faster to write.
What to learn next
Since TypeScript is a superset of JavaScript, you already know most of it once you know JS β the additional learning is mostly around type annotations, interfaces and generics. React and Node.js both work naturally with TypeScript once you've got the basics.