Modules helps in writing clean code like seperating modules for dataacces, UI and security. Each modules has a separate role of its own
like httpModule, routing module. Writing Modules in TS would create IIFE(Immediately Invoked Function Expression) in javascript file
module dataService{ }
So what is difference between class and module. Both are same except one. Classes are created in Global namespace.
However module can be either global or local.
class dataService{ }
Now lets wrap class with in module which is nothing more than namespace
module Shapes{ export class Rectangle{ } export class Square{ } export class Triangle{ } } var objShapes:any = new Shapes.Square;
Simple Program for Logging Message using Module and Interface
interface ILoggerUtils { print(): void; } var LogLevel = { info: 1, Warn: 2, Error:3 } module LogUtils { export class LoggerAtError implements ILoggerUtils { print(): void { console.log("Log Message during Error"); } } export class LoggerAtInfo implements ILoggerUtils { print(): void { console.log("Log Message during Info"); } } export class LoggerAtWarn implements ILoggerUtils { print(): void { console.log("Log Message during Warn"); } } } window.onload = function () { var objLoggerUtil: ILoggerUtils; var logLevel = LogLevel.info; switch (logLevel) { case LogLevel.info: objLoggerUtil = new LogUtils.LoggerAtInfo(); break; case LogLevel.Warn: objLoggerUtil = new LogUtils.LoggerAtWarn(); break; case LogLevel.Error: objLoggerUtil = new LogUtils.LoggerAtError(); break; } objLoggerUtil.print(); }
Output
Log Message during Info