在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
命名空间一个最明确的目的就是解决重名问题。 一、定义和使用命名空间TypeScript 中命名空间使用 namespace 来定义,语法格式如下: namespace SomeNameSpaceName {
export interface ISomeInterfaceName { }
export class SomeClassName { }
} 以上定义了一个命名空间 SomeNameSpaceName,如果我们需要在外部可以调用 SomeNameSpaceName 中的类和接口,则需要在类和接口添加 export 关键字。 要在另外一个命名空间调用语法格式为: SomeNameSpaceName.SomeClassName; 如果一个命名空间在一个单独的 TypeScript 文件中,则应使用三斜杠 /// 引用它,语法格式如下: /// 以下实例演示了定义在不同文件中命名空间的使用: IShape.ts 文件代码: namespace Drawing {
export interface IShape {
draw();
}
} Circle.ts 文件代码: /// TestShape.ts 文件代码: /// 使用 tsc 命令编译以上代码: tsc --out app.js TestShape.ts 得到以下 JavaScript 代码: /// 使用 node 命令查看输出结果为: $ node app.js Circle is drawn Triangle is drawn 二、嵌套命名空间命名空间支持嵌套,即你可以将命名空间定义在另外一个命名空间里头。 namespace namespace_name1 {
export namespace namespace_name2 {
export class class_name { }
}
} 成员的访问使用点号 . 来实现。 如下实例: Invoice.ts 文件代码: namespace Runoob { export namespace invoiceApp { export class Invoice { public calculateDiscount(price: number) { return price * .40; } } } } InvoiceTest.ts 文件代码: /// 使用 tsc 命令编译以上代码: tsc --out app.js InvoiceTest.ts 得到以下 JavaScript 代码: var Runoob; (function (Runoob) { var invoiceApp; (function (invoiceApp) { var Invoice = /** @class */ (function () { function Invoice() { } Invoice.prototype.calculateDiscount = function (price) { return price * .40; }; return Invoice; }()); invoiceApp.Invoice = Invoice; })(invoiceApp = Runoob.invoiceApp || (Runoob.invoiceApp = {})); })(Runoob || (Runoob = {})); /// 使用 node 命令查看输出结果为: $ node app.js 200 |
请发表评论