Typescript es6模块重新导出可变变量绑定

时间:2016-01-05 12:00:10

标签: javascript typescript ecmascript-6

我正在尝试使用es6模块语法重新导出变量,然后更改它并查看最终导入中反映的更改。但它没有按预期工作。请参阅以下示例:

a.ts

export var a = 1;
export function changeA() { a = 2; }

b.ts

export * from './a';

c.ts

import { a, changeA } from './b';
console.log(a); // 1
changeA();
console.log(a); // Expected 2 but get 1

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "outDir": "out"
  }
}

运行结果:

$ node out/c.js
1
1

我希望最终的console.log打印2以反映更新,但事实并非如此。但是,如果我用babel编译相同的例子,它就可以了。是否重新导出可变变量绑定根本不适用于打字稿,或者我只是做错了什么?

1 个答案:

答案 0 :(得分:4)

这是因为$note = Input::all(); var_dump($note);

b.ts

转化为

export * from './a';

并且复制变量function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } __export(require('./a')); 的值并且不被引用。

你可以这样做:

<强> a.ts

a

<强> b.ts

export var a = 1;
export var deeper = {
    a: 1
};
export function changeA() {
    a = 2;
    deeper.a = 2;
}

<强> c.ts

export * from './a';