命名空間乙個最明確的目的就是解決重名問題。
假設這樣一種情況,當乙個班上有兩個名叫小明的學生時,為了明確區分它們,我們在使用名字之外,不得不使用一些額外的資訊,比如他們的姓(王小明,李小明),或者他們父母的名字等等。
命名空間定義了識別符號的可見範圍,乙個識別符號可在多個名字空間中定義,它在不同名字空間中的含義是互不相干的。這樣,在乙個新的名字空間中可定義任何識別符號,它們不會與任何已有的識別符號發生衝突,因為已有的定義都處於其他名字空間中。
typescript 中命名空間使用namespace來定義,語法格式如下:
namespace somenamespacename export class someclassname }
以上定義了乙個命名空間 somenamespacename,如果我們需要在外部可以呼叫 somenamespacename 中的類和介面,則需要在類和介面新增export關鍵字。
要在另外乙個命名空間呼叫語法格式為:
somenamespacename.someclassname;
如果乙個命名空間在乙個單獨的 typescript 檔案中,則應使用三斜槓 /// 引用它,語法格式如下:
///
注意: 引用另乙個ts檔案,需要在檔案的頭部,否則報錯
使用 tsc 命令編譯以上**需要注意的是 需要在命令裡面加上 --out ***.js
--out 指的是編譯多個檔案,合併到乙個檔案輸出
eg.
tsc .\test.ts --watch --target es5 --out test.js
命名空間 例:
// ishape.ts
namespace drawing
}
// circle.ts
///namespace drawing
} }
// ********.ts
///namespace drawing
}}
// test.ts
/// /// /// function drawallshapes(shape: drawing.ishape)
let cir1 = new drawing.circle();
let tri1 = new drawing.********();
drawallshapes(cir1);
drawallshapes(tri1);
ps: 注意! 命令裡面必須包含 --out 否則會報錯
命名空間支援巢狀,即你可以將命名空間定義在另外乙個命名空間裡頭。
語法如下:
namespace namespace_name1
} }
成員的訪問使用點號 . 來實現,如下例項:
// invoice.ts
namespace runoob}}
}
// test.ts
console.log(invoice.calculatediscount(200));
Typescript學習筆記
物件導向特性 類類的宣告 用class關鍵字 加類名 class person 類宣告完之後就可以被例項化了,類相當於乙個模子.name string eat var p1 new person p1.name batman p1.eat var p2 new person p2.name supe...
typescript學習筆記
1,ts是js的超集,ts是強型別語言。ts比js入門更難。ts的物件導向寫法比js更優雅。ts更適合團隊協作。2,宣告變數篇。3,宣告函式篇。4,物件導向篇。4.1,子類繼承父類 extends 繼承多個介面 implements。4.2,this表示當前物件,super表示父類物件。子類不寫co...
typescript學習之 類
類的定義class person run void var p newperson 張珊 p.run 繼承,關鍵字 extends,super class person run void 繼承 class children extends person work void var child new...