typescript 學習(18) 命名空間

2021-10-09 10:42:46 字數 1732 閱讀 4927

命名空間乙個最明確的目的就是解決重名問題

假設這樣一種情況,當乙個班上有兩個名叫小明的學生時,為了明確區分它們,我們在使用名字之外,不得不使用一些額外的資訊,比如他們的姓(王小明,李小明),或者他們父母的名字等等。

命名空間定義了識別符號的可見範圍,乙個識別符號可在多個名字空間中定義,它在不同名字空間中的含義是互不相干的。這樣,在乙個新的名字空間中可定義任何識別符號,它們不會與任何已有的識別符號發生衝突,因為已有的定義都處於其他名字空間中。

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...