初始文件目录
|-src
|-space
|-index.ts
|-name.ts
|-age.ts
src/space/index.ts:
/// <Reference path="./name.ts" />
/// <Reference path="./age.ts" />
console.log(InfoSpace)
src/space/name.ts:
namespace InfoSpace {
export const name = 'tianyu'
export function sayName() {}
}
src/space/age.ts:
namespace InfoSpace {
export const age = 18
export function sayAge() {}
}
终端执行 tsc --outFile src/space.js src/space/index.ts
生成文件目录
|-src
|-space
|-index.ts
|-name.ts
|-age.ts
|-space.js
src/space.js:
可以发现多个相同的namespace并不会冲突,而会被ts编译为多个独立作用域的闭包函数,传入namespace变量并对该namespace进行属性赋值
var InfoSpace;
(function (InfoSpace) {
InfoSpace.name = 'tianyu';
function sayName() { }
InfoSpace.sayName = sayName;
})(InfoSpace || (InfoSpace = {}));
var InfoSpace;
(function (InfoSpace) {
InfoSpace.age = 18;
function sayAge() { }
InfoSpace.sayAge = sayAge;
})(InfoSpace || (InfoSpace = {}));
/// <Reference path="./name.ts" />
/// <Reference path="./age.ts" />
console.log(InfoSpace);
然后终端执行 node .\src\space.js,打印如下:
{
name: 'tianyu',
sayName: [Function: sayName],
age: 18,
sayAge: [Function: sayAge]
}