十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
TypeScript 是 JavaScript 的一個(gè)超集,支持 ECMAScript 6 標(biāo)準(zhǔn)。
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的蒙山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
TypeScript 由微軟開發(fā)的自由和開源的編程語言。
TypeScript 設(shè)計(jì)目標(biāo)是開發(fā)大型應(yīng)用,它可以編譯成純 JavaScript,編譯出來的 JavaScript 可以運(yùn)行在任何瀏覽器上。
命名空間一個(gè)最明確的目的就是解決重名問題。
假設(shè)這樣一種情況,當(dāng)一個(gè)班上有兩個(gè)名叫小明的學(xué)生時(shí),為了明確區(qū)分它們,我們?cè)谑褂妹种?,不得不使用一些額外的信息,比如他們的姓(王小明,李小明),或者他們父母的名字等等。
命名空間定義了標(biāo)識(shí)符的可見范圍,一個(gè)標(biāo)識(shí)符可在多個(gè)名字空間中定義,它在不同名字空間中的含義是互不相干的。這樣,在一個(gè)新的名字空間中可定義任何標(biāo)識(shí)符,它們不會(huì)與任何已有的標(biāo)識(shí)符發(fā)生沖突,因?yàn)橐延械亩x都處于其他名字空間中。
TypeScript 中命名空間使用 namespace 來定義,語法格式如下:
namespace SomeNameSpaceName { export interface ISomeInterfaceName { } export class SomeClassName { } }
以上定義了一個(gè)命名空間 SomeNameSpaceName,如果我們需要在外部可以調(diào)用 SomeNameSpaceName 中的類和接口,則需要在類和接口添加 export 關(guān)鍵字。
要在另外一個(gè)命名空間調(diào)用語法格式為:
SomeNameSpaceName.SomeClassName;
如果一個(gè)命名空間在一個(gè)單獨(dú)的 TypeScript 文件中,則應(yīng)使用三斜杠 /// 引用它,語法格式如下:
///
以下實(shí)例演示了命名空間的使用,定義在不同文件中:
IShape.ts 文件代碼:
namespace Drawing { export interface IShape { draw(); } }
Circle.ts 文件代碼:
///namespace Drawing { export class Circle implements IShape { public draw() { console.log("Circle is drawn"); } } }
Triangle.ts 文件代碼:
///namespace Drawing { export class Triangle implements IShape { public draw() { console.log("Triangle is drawn"); } } }
TestShape.ts 文件代碼:
////// /// function drawAllShapes(shape:Drawing.IShape) { shape.draw(); } drawAllShapes(new Drawing.Circle()); drawAllShapes(new Drawing.Triangle());
使用 tsc 命令編譯以上代碼:
tsc --out app.js TestShape.ts
得到以下 JavaScript 代碼:
JavaScript ///var Drawing; (function (Drawing) { var Circle = /** @class */ (function () { function Circle() { } Circle.prototype.draw = function () { console.log("Circle is drawn"); }; return Circle; }()); Drawing.Circle = Circle; })(Drawing || (Drawing = {})); /// var Drawing; (function (Drawing) { var Triangle = /** @class */ (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());
使用 node 命令查看輸出結(jié)果為:
$ node app.js
Circle is drawn
Triangle is drawn
嵌套命名空間
命名空間支持嵌套,即你可以將命名空間定義在另外一個(gè)命名空間里頭。
namespace namespace_name1 { export namespace namespace_name2 { export class class_name { } } }
成員的訪問使用點(diǎn)號(hào) . 來實(shí)現(xiàn),如下實(shí)例:
Invoice.ts 文件代碼:
namespace Runoob { export namespace invoiceApp { export class Invoice { public calculateDiscount(price: number) { return price * .40; } } } }
InvoiceTest.ts 文件代碼:
///var invoice = new Runoob.invoiceApp.Invoice(); console.log(invoice.calculateDiscount(500));
使用 tsc 命令編譯以上代碼:
tsc --out app.js InvoiceTest.ts
得到以下 JavaScript 代碼:
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 = {})); ///var invoice = new Runoob.invoiceApp.Invoice(); console.log(invoice.calculateDiscount(500));
使用 node 命令查看輸出結(jié)果為:
$ node app.js
200
TypeScript 語言特性
TypeScript 是一種給 JavaScript 添加特性的語言擴(kuò)展。增加的功能包括:
以下功能是從 ECMA 2015 反向移植而來:
JavaScript 與 TypeScript 的區(qū)別
TypeScript 是 JavaScript 的超集,擴(kuò)展了 JavaScript 的語法,因此現(xiàn)有的 JavaScript 代碼可與 TypeScript 一起工作無需任何修改,TypeScript 通過類型注解提供編譯時(shí)的靜態(tài)類型檢查。
TypeScript 可處理已有的 JavaScript 代碼,并只對(duì)其中的 TypeScript 代碼進(jìn)行編譯。
總結(jié)
到此這篇關(guān)于TypeScript 命名空間的文章就介紹到這了,更多相關(guān)TypeScript 命名空間內(nèi)容請(qǐng)搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!