开发手册 欢迎您!
软件开发者资料库

TypeScript - 命名空间

TypeScript命名空间 - 从简单和简单的步骤学习TypeScript,从基本到高级概念,包括概述,环境设置,基本语法,类型,变量,运算符,决策,循环,函数,数字,字符串,数组,元组,联盟,接口,类,对象,命名空间,模块,环境。

命名空间是一种逻辑分组相关代码的方法.这是内置于TypeScript中的,与JavaScript不同,其中变量声明进入全局范围,如果在同一个项目中使用多个JavaScript文件,则可能会覆盖或误解相同的变量,这将导致"全局名称空间污染问题". JavaScript.

定义命名空间

命名空间定义以关键字 namespace 开头,后跟命名空间名称,如下所示;

  namespace SomeNameSpaceName { export interface ISomeInterfaceName {}  export class SomeClassName {} }

应该在命名空间外访问的类或接口应标记为关键字 export .

要访问另一个命名空间中的类或接口,语法将是namespaceName.className

SomeNameSpaceName.SomeClassName;

如果第一个命名空间位于单独的TypeScript文件中,则应使用三次斜杠引用语法引用它.

 ///< reference path ="SomeFileName.ts"/>

以下程序演示名称空间的使用 :

FileName :IShape.ts ---------- namespace Drawing {    export interface IShape {       draw();    }}  FileName :Circle.ts ---------- ///  namespace Drawing {    export class Circle implements IShape {       public draw() {          console.log("Circle is drawn");       }              FileName :Triangle.ts       ----------       ///        namespace Drawing {          export class Triangle implements IShape {             public draw() {                console.log("Triangle is drawn");             }          }                   FileName : TestShape.ts          ///             ///           ///            function drawAllShapes(shape:Drawing.IShape) {             shape.draw();          }          drawAllShapes(new Drawing.Circle());         drawAllShapes(new Drawing.Triangle());      }   }}

上面的代码可以使用以下命令编译和执行 :

tsc --out app.js TestShape.ts  node app.js

在编译时,它将生成以下JavaScript代码(app.js).

//Generated by typescript 1.8.10/// var Drawing;(function (Drawing) {   var Circle = (function () {      function Circle() {      }      Circle.prototype.draw = function () {         console.log("Cirlce is drawn");      };      return Circle;   }());   Drawing.Circle = Circle;})(Drawing || (Drawing = {}));/// var Drawing;(function (Drawing) {   var Triangle = (function () {      function Triangle() {      }      Triangle.prototype.draw = function () {         console.log("Triangle is drawn");      };      return Triangle;   }());   Drawing.Triangle = Triangle;})(Drawing || (Drawing = {}));/// /// /// function drawAllShapes(shape) {   shape.draw();}drawAllShapes(new Drawing.Circle());drawAllShapes(new Drawing.Triangle());

编译并执行上述代码时,会产生以下结果 :

Circle is drawn Triangle is drawn

嵌套命名空间

您可以定义一个另一个命名空间内的命名空间如下 :

  namespace namespace_name1 { export namespace namespace_name2 { export class class_name {} } }

您可以使用点(.)运算符访问嵌套命名空间的成员,如下所示 :

FileName : Invoice.ts  namespace tutorialPoint {    export namespace invoiceApp {       export class Invoice {          public calculateDiscount(price: number) {             return price * .40;          }       }    } } FileName: InvoiceTest.ts /// var invoice = new tutorialPoint.invoiceApp.Invoice(); console.log(invoice.calculateDiscount(500));

上述代码可以使用以下命令编译和执行 :

tsc --out app.js InvoiceTest.ts node app.js

在编译时,它将生成以下JavaScript代码(app .js).

//Generated by typescript 1.8.10var tutorialPoint;(function (tutorialPoint) {   var invoiceApp;   (function (invoiceApp) {      var Invoice = (function () {         function Invoice() {         }         Invoice.prototype.calculateDiscount = function (price) {            return price * .40;         };         return Invoice;      }());      invoiceApp.Invoice = Invoice;   })(invoiceApp = tutorialPoint.invoiceApp || (tutorialPoint.invoiceApp = {}));})(tutorialPoint || (tutorialPoint = {}));/// var invoice = new tutorialPoint.invoiceApp.Invoice();console.log(invoice.calculateDiscount(500));

编译并执行上述代码时,会产生以下结果 :

  200