typescript中namespace的tsc编译记录

初始文件目录

|-src
    |-space
        |-index.ts
        |-name.ts
        |-age.ts

src/space/index.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 = {}));
/// 
/// 
console.log(InfoSpace);

然后终端执行 node .\src\space.js,打印如下:

{
  name: 'tianyu',
  sayName: [Function: sayName],
  age: 18,
  sayAge: [Function: sayAge]
}

你可能感兴趣的:(javascript,typescript)