命名空間一個最明確的目的就是解決重名問題,其定義了標識符的可見范圍,一個標識符可在多個名字空間中定義,它在不同名字空間中的含義是互不相干的。
這樣,在一個新的名字空間中可定義任何標識符,它們不會與任何已有的標識符發生沖突,因為已有的定義都處於其他名字空間中。
一、TypeScript 命名空間
TypeScript 中使用 namespace 來定義命名空間,語法格式如下:
namespace SomeNameSpaceName { export interface ISomeInterfaceName { } export class SomeClassName { } }
以上定義了一個命名空間 SomeNameSpaceName,如果我們需要在外部可以調用 SomeNameSpaceName 中的類和接口,則需要在類和接口添加 export 關鍵字
在另外一個命名空間調用語法格式為:
SomeNameSpaceName.SomeClassName;
如果一個命名空間在一個單獨的 TypeScript 文件中,則應使用三斜杠 /// 引用它,語法格式如下:
/// <reference path = "SomeFileName.ts" />
舉個例子:
page.ts 文件:
index.html 文件:
二、嵌套命名空間
命名空間支持嵌套,即可以將命名空間定義在另外一個命名空間中
namespace namespace_name1 { export namespace namespace_name2 { export class class_name { } } }
成員的訪問使用點號 . 來實現,如下實例:
page1.ts 文件
page2.ts 文件