📘 TypeScript
TypeScript Variables and Type System
Type Annotations
TypeScript lets you annotate variables with their types. The compiler infers types when you don't annotate explicitly.
let name: string = "Alice";
let age: number = 25;
let isActive: boolean = true;
let data: null = null;
let value: undefined = undefined;
// Type inference — TypeScript figures it out
let city = "London"; // inferred as string
let count = 42; // inferred as number
Arrays and Tuples
const numbers: number[] = [1, 2, 3, 4, 5];
const names: Array = ["Alice", "Bob"];
// Tuple — fixed-length array with known types
const point: [number, number] = [10, 20];
const entry: [string, number] = ["score", 95];
Union Types
let id: string | number;
id = "abc-123"; // OK
id = 42; // OK
// id = true; // ❌ Error
function printId(id: string | number) {
if (typeof id === "string") {
console.log(id.toUpperCase());
} else {
console.log(id.toFixed(2));
}
}
Literal Types and Type Aliases
type Direction = "up" | "down" | "left" | "right";
type Status = "pending" | "approved" | "rejected";
let move: Direction = "up"; // OK
// move = "diagonal"; // ❌ Error
type Point = { x: number; y: number };
const origin: Point = { x: 0, y: 0 };
any, unknown, never
let anything: any = "hello"; // disables type checking
anything = 42; // OK
let safe: unknown = getData(); // must narrow before using
if (typeof safe === "string") {
console.log(safe.toUpperCase());
}
function fail(msg: string): never { // never returns
throw new Error(msg);
}