TypeScript的命名空間和模塊


原來TypeScript有內部模塊,外部模塊,我沒見過是啥樣的。后來ES6(ES2015)標准發布了,TypeScript現在處理命名空間和模塊的標准見下面三個翻譯官網的文檔。

模塊  https://www.tslang.cn/docs/handbook/modules.html

命名空間  https://www.tslang.cn/docs/handbook/namespaces.html

命名空間和模塊 https://www.tslang.cn/docs/handbook/namespaces-and-modules.html

 

要把module和namespace看做一樣的東西。帶export在module或namespace上,就需要使用時import,不帶export就不需要import,可以全局訪問。不建議多層嵌套。除非是namespace,它有時有namespace A.B.C{ 的需求

module和namespace里面的東西需要暴露的就也需要export

例如 export module A{ export class B

記得把 tsconfig.json 里面的 "module" 配置修改成 UMD,他表示你編譯出來的 javascript 可以適應 commonjs 裝載規則,也可以適應 amd 裝載規則

 

簡單說,TypeScript 處理模塊和空間有幾個約定

模塊就看做ES6的模塊,一個文件一個模塊是共識。

同名命名空間可以分散各個ts中

模塊和命名空間在同一ts文件中就不要混用合用了

一般認為模塊是內部的,ts中需要import才能暴露出來。在前端代碼中,在手寫的其他javascript中一定需要require才能找到。

一般認為命名空間是全局的,會污染環境,ts中也需要通過import才能找到。在前端代碼中,在手寫的其他javascript代碼中,直接引用全局變量也是可以找到的(當然之前要先include),require也是可以找到。

一般認為module聲明需要export。所以服務端的module不帶export別人就沒法用了(因為不像客戶端可以通過include先加入)

一般認為namespace聲明不應要export(主要給客戶端html用,只要include順序對了,直接全局限定名就可以訪問)。如果namespace也帶export,你就認為這是namespace和module作用一樣就是了,失去了全局訪問的可能性。

其他的

export default

export =

import = 

不理會也罷,記住了用法,腦細胞也死了不少。前面的基本約定知道了就基本夠用了。

 模塊

export module M3
{
    export class C3
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM