How to Create Nested Classes in TypeScript ?
Last Updated :
11 Jan, 2024
In TypeScript, you can create nested classes using different methods. We will discuss about three different approaches to creating nested classes in TypeScript.
These are the approaches:
By defining nested classes inside a class
In this approach, we will directly define the nested class inside the outer class.
Syntax:
class OuterClass{
static InnerClass = class{
}
}
Example: The below code example defines a nested class inside another class.
Javascript
class OuterClass {
outerClassProperty: string;
constructor(outerClassProperty: string) {
this .outerClassProperty = outerClassProperty;
}
outerClassMethod() {
console.log
(`Outer Class property:
${ this .outerClassProperty}`);
}
static InnerClass = class {
innerClassProperty: string;
constructor(innerClassProperty: string) {
this .innerClassProperty = innerClassProperty;
}
innerClassMethod() {
console.log
(`Inner Class property:
${ this .innerClassProperty}`);
}
}
}
const outerClassInstance = new OuterClass( "GeeksforGeeks" );
outerClassInstance.outerClassMethod();
const innerClassInstance =
new OuterClass.InnerClass( "A Computer Science Portal" );
innerClassInstance.innerClassMethod();
|
Output:
Outer Class property: GeeksforGeeks
Inner Class property: A Computer Science Portal
By using the namespaces
The namespace can also be used to create a namespace of Outer class and the namespace of the inner class which can be later merged together to create nested classes.
Syntax:
namespace namespace_name{
export class OuterClass{}
}
namespace namespace_name.OuterClass{
export class InnerClass{}
}
Example: The below code example will help you to create the nested classes using the namespace approach.
Javascript
namespace nestedClasses {
export class OuterClass {
outerClassProperty: string;
constructor(outerClassProperty: string) {
this .outerClassProperty = outerClassProperty;
}
outerClassMethod() {
console.log
(`Outer Class property:
${ this .outerClassProperty}`);
}
}
}
namespace nestedClasses.OuterClass {
export class InnerClass {
innerClassProperty: string;
constructor(innerClassProperty: string) {
this .innerClassProperty = innerClassProperty;
}
innerClassMethod() {
console.log
(`Inner Class property:
${ this .innerClassProperty}`);
}
}
}
const outerClassInstance =
new nestedClasses.OuterClass( "GeeksforGeeks" );
outerClassInstance.outerClassMethod();
const innerClassInstance =
new nestedClasses.OuterClass
.InnerClass( "A Computer Science Portal" );
innerClassInstance.innerClassMethod();
|
Output:
Outer Class property: GeeksforGeeks
Inner Class property: A Computer Science Portal
By using the modules
The modules can also be used to create nested classes in TypeScript in the same way as we used namespace.
Syntax:
namespace namespace_name{
export class OuterClass{}
}
namespace namespace_name.OuterClass{
export class InnerClass{}
}
Example: The below example uses the modules to define the nested classes in TypeScript.
Javascript
module nestedClasses {
export class OuterClass {
outerClassProperty: string;
constructor(outerClassProperty: string) {
this .outerClassProperty = outerClassProperty;
}
outerClassMethod() {
console.log
(`Outer Class property:
${ this .outerClassProperty}`);
}
}
}
module nestedClasses.OuterClass {
export class InnerClass {
innerClassProperty: string;
constructor(innerClassProperty: string) {
this .innerClassProperty = innerClassProperty;
}
innerClassMethod() {
console.log
(`Inner Class property:
${ this .innerClassProperty}`);
}
}
}
const outerClassInstance =
new nestedClasses.OuterClass( "GeeksforGeeks" );
outerClassInstance.outerClassMethod();
const innerClassInstance =
new nestedClasses.OuterClass
.InnerClass( "A Computer Science Portal" );
innerClassInstance.innerClassMethod();
|
Output:
Outer Class property: GeeksforGeeks
Inner Class property: A Computer Science Portal
Share your thoughts in the comments
Please Login to comment...