亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

TypeScript 命名空間

命名空間同樣是為了避免變量命名沖突,TypeScript 官方將命名空間視為“內部模塊”,上節介紹的模塊被視為“外部模塊”。

如果聲明相同名稱的命名空間,TypeScript 編譯器會將其合并為一個聲明,具體的合并規則會在下節介紹。

1. 慕課解釋

使用 namespace 關鍵字來聲明命名空間。

TypeScript 的命名空間可以將代碼包裹起來,只對外暴露這個命名空間對象,通過 export 關鍵字將命名空間內的變量掛載到命名空間對象上。

2. 命名空間的本質

命名空間本質上就是一個對象,將其內部的變量組織到這個對象的屬性上:

namespace Calculate {
  const fn = (x: number, y: number) => x * y 
  export const add = (x: number, y:number) => x + y
}

來看其編譯后的結果:

"use strict";
var Calculate;
(function (Calculate) {
    var fn = function (x, y) { return x * y; };
    Calculate.add = function (x, y) { return x + y; };
})(Calculate || (Calculate = {}));

那么,我們就可以訪問 Calculate 對象上的 add 屬性了:

Calculate.add(2, 3)

命名空間主要是為解決全局作用域內重名問題,而這一問題隨著模塊化編程的使用,已經得到了解決。

3. 小結

通過本節的介紹,知道命名空間的使用方法即可,在 TypeScript 中一般不推薦使用。