天天看點

TS:命名空間

在確定我們建立的變量不會洩露至全局變量中,我們以前曾采用過這種代碼組織形式:

但在基于檔案子產品的項目中,我們無須擔心這一點,此種方式,适合用于合理的函數邏輯分組中,在 typescript 中,提供了 namespace 關鍵字來描述這種分組,在 typescript 編譯器進行編譯過後,命名空間也就被編譯成了上述示例那樣的代碼。

typescript 的命名空間隻對外暴露需要在外部通路的對象,命名空間内的對象通過 export 關鍵字對外暴露,比如我們在一個名叫 ​<code>​utils.ts​</code>​ 的檔案裡聲明一個命名空間:

通過 namespace 關鍵字聲明命名空間,在命名空間外部需要通過完全限定名通路這些對象,通常情況下,聲明的命名空間代碼和調用的代碼不在同一個檔案裡,是以在其他檔案中使用,注意引入的路徑要寫正确,此處我們在同級目錄中任意一個 ts 檔案中使用我們剛定義的命名空間:

如上述代碼所示,通過 reference 注釋引用命名空間,即可通過完全限定名進行通路,我們也可以通過 ​<code>​import​</code>​ 導入子產品的形式,引入命名空間:

就像普通的 js 子產品檔案可以互相引用一樣,包含 namespace 的命名空間檔案也可以互相引入,還可以組合成一個更大的命名空間,下面是一個簡單的示例,所有檔案都在同一目錄下,你也可參考官方示例:

utils.ts

animal.ts

index.ts

作者:半掩時光

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

繼續閱讀