What’s an Internal Module?
You can define modules within your typescript files and all variables defined within the module are scoped to the module and removed from the global scope.
You can access the variable outside the module using the export keyword and also you can extend internal modules, share them across files, and reference them using the triple slash. Syntax - (///)
Named Internal Modules –
Internal modules are come in earlier version of the Typescript and it was basically used to logically group classes, interfaces, and functions into one unit and it can be export in another module.
Now this logically group named call “namespace” in latest version of TypeScript. So we can use namespace instead of internal modules in the TypeScript. As per me, this one is the best coding practice but don’t mind the internal modules are also supporting, if you want can use it.
Example using module -
module System.modules { //this function can be accessed from outside the module because using export. export function addNumbers(a: number, b: number): number { return a + b; } // this class can be accessed from outside the module because using export. export class ExportedClass { public subNumbers(a: number, b: number): number { return a - b; } } //this class can only be accessed from inside the module because not using export. class NotExportedClass { mulNumbers(a: number, b: number): number { return a * b; } divNumbers(a: number, b: number): number { return a > 0 ? a / b : 0; } } }
Example using namespace –
namespace System.namespaces { //this function can be accessed from outside the module because using export. export function addNumbers(a: number, b: number): number { return a + b; } // this class can be accessed from outside the module because using export. export class ExportedClass { public subNumbers(a: number, b: number): number { return a - b; } } //this class can only be accessed from inside the module because not using export. class NotExportedClass { mulNumbers(a: number, b: number): number { return a * b; } divNumbers(a: number, b: number): number { return a > 0 ? a / b : 0; } } }
I hope you are enjoying with this post! Please share with you friends. Thank you!!