What is namespace in Typescript ?
Last Updated :
17 Mar, 2025
In TypeScript, a namespace is a way to organize code logically and prevent naming conflicts between identifiers. It allows developers to group related functionalities, such as interfaces, classes, functions, and variables, within a dedicated scope.
Namespaces are particularly useful for structuring large applications, avoiding global scope pollution, and maintaining a clear hierarchy.
Declaring and Using a Namespace in TypeScript
Here’s a simple example demonstrating how to create and use a namespace in TypeScript:
JavaScript
namespace Geometry {
export class Circle {
constructor(public radius: number) {}
area(): number {
return Math.PI * this.radius ** 2;
}
}
}
const circle = new Geometry.Circle(5);
console.log(circle.area());
- Namespace Declaration: The Geometry namespace encapsulates the Circle class, ensuring that its members are scoped within this namespace.
- Class Definition: The Circle class has a constructor to set the radius and a method area() to calculate the area of the circle.
- Object Instantiation: An instance of Circle is created with a radius of 5.
- Method Invocation: The area() method is called on the circle instance to compute and log the area.
Output:
78.53981633974483
More Examples of Namespace in TypeScript
Declaring and Accessing a Simple Namespace
JavaScript
namespace MyNamespace {
export function myFunction() {
console.log('This is my function in MyNamespace');
}
}
MyNamespace.myFunction();
- Namespace Declaration: MyNamespace is defined using the namespace keyword, encapsulating the myFunction function.
- Function Definition: myFunction logs a message to the console.
- Export Keyword: The export keyword makes myFunction accessible outside the MyNamespace namespace.
- Function Invocation: myFunction is called using dot notation: MyNamespace.myFunction().
Output:
This is my function in MyNamespac
Declaring and Accessing a Nested Namespace
JavaScript
namespace MyNamespace {
export namespace MySubNamespace {
export function myFunction() {
console.log('This is my function in MySubNamespace');
}
}
}
MyNamespace.MySubNamespace.myFunction();
- Nested Namespace Declaration: MySubNamespace is defined inside MyNamespace, creating a hierarchical structure.
- Function Definition: myFunction logs a message to the console.
- Export Keyword: The export keyword makes myFunction accessible outside the MySubNamespace namespace.
- Function Invocation: myFunction is called using dot notation: MyNamespace.MySubNamespace.myFunction().
Output:
"This is my function in MySubNamespace"
Benefits of Using Namespaces
- Organize Code: Namespaces help group related code together, making it easier to manage and maintain.
- Prevent Conflicts: They avoid naming issues by keeping your code in its own unique space.
- Hide Details: You can keep internal code hidden and only show the necessary parts to the outside world.
- Break Down Code: Namespaces let you divide a large project into smaller, easier-to-manage pieces.
Namespaces vs. Modules in TypeScript
Here are the main differences between Namespaces and Modules in TypeScript:
Feature | Namespaces | Modules |
---|
Usage | TypeScript-specific | Standard JavaScript feature |
Scope | Works within a global file | Works across multiple files |
Syntax | Uses namespace keyword | Uses import /export |
Modularity | Less flexible | More scalable and reusable |
Recommendation | Not preferred for new projects | Recommended for modern development |
Similar Reads
What is Type Predicates in Typescript ? In this article, we are going to learn about the type predicates in Typescript. TypeScript is a statically typed programming language that provides many features to make your code more efficient and robust. Type predicates in TypeScript are functions that return a boolean value and are used to narro
3 min read
What are TypeScript Interfaces? TypeScript interfaces define the structure of objects by specifying property types and method signatures, ensuring consistent shapes and enhancing code clarity.Allow for optional and read-only properties for flexibility and immutability.Enable interface inheritance to create reusable and extendable
4 min read
What is TypeScript Definition Manager ? What is TypeScript Definition Manager? TypeScript Definition Manager (TSDM) is a type definition manager for TypeScript, the popular JavaScript superset. It is a command line tool (CLI) that helps developers create, maintain, and manage type definitions for TypeScript projects. It is an open-source,
4 min read
What is Type Erasure in TypeScript? TypeScript is a very mighty superset of JavaScript, which adds static typing to the language and allows developers to catch errors early on as well as write more maintainable code. This being said a TypeScript type system erases type information at compile time (or during the compilation), a phenome
4 min read
What are the Modules in Typescript ? Modules in TypeScript allow you to organize code into reusable, manageable, and logical units by encapsulating functionalities into separate files.They help avoid global namespace pollution by providing scoped declarations.Modules can be imported and exported, enabling code reuse and better maintain
4 min read
What is the Function type in TypeScript ? TypeScript is a JavaScript-based programming language with a typed syntax. It provides improved tools of any size. It adds extra syntax to JavaScript. This helps in facilitating a stronger interaction between you and your editor. It also helps in catching the mistakes well in advance. It uses type
3 min read