Namespaces vs Modules: Modern Usage
Understand why modules are preferred over namespaces.
Namespaces vs Modules: Modern Usage is a free TypeScript Academy lesson on CoddyKit — lesson 4 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the TypeScript Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Welcome
What Is a Namespace
namespace Geometry {
export interface Point { x: number; y: number; }
export function distance(a: Point, b: Point): number {
return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
}
}Accessing Namespace Members
const p1: Geometry.Point = { x: 0, y: 0 };
const p2: Geometry.Point = { x: 3, y: 4 };
const d = Geometry.distance(p1, p2); // 5Nested Namespaces
namespace App {
export namespace Models {
export interface User { name: string; }
}
}
const u: App.Models.User = { name: 'Alice' };Namespace Merging
namespace Validation {
export function validate(s: string): boolean { return s.length > 0; }
}
namespace Validation {
export function sanitize(s: string): string { return s.trim(); }
}Why Modules Are Preferred
The Module Equivalent of a Namespace
// geometry.ts
export interface Point { x: number; y: number; }
export function distance(a: Point, b: Point): number {
return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
}Namespaces Still Used in Declaration Files
// node.d.ts
declare namespace NodeJS {
interface ProcessEnv { NODE_ENV?: 'development' | 'production'; }
}Triple-Slash References (Legacy)
/// <reference types="node" />
/// <reference path="./other.d.ts" />When to Still Use Namespaces
Migrating from Namespaces to Modules
Quick Check
Recap
Frequently asked questions
Is the “Namespaces vs Modules: Modern Usage” lesson free?
Yes — the full text of “Namespaces vs Modules: Modern Usage” is free to read here on the web, and the TypeScript Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the TypeScript Academy course, upgrade to CoddyKit PRO.
What will I learn in “Namespaces vs Modules: Modern Usage”?
Understand why modules are preferred over namespaces. You practise TypeScript Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start TypeScript Academy?
No prior experience is required. TypeScript Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 4 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Namespaces vs Modules: Modern Usage” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this TypeScript Academy lesson?
Yes. Every TypeScript Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- ES Module Syntax: import and export
- Re-exports and Barrel Files
- Type-Only Imports and Exports
- Namespaces vs Modules: Modern Usage