6
es6モジュール構文を使用して変数を再エクスポートしようとしていますが、変更して最終的なインポートに反映されています。しかし、期待どおりに動作していません。以下の例を参照してください:Typescript 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でコンパイルしても動作します。変更可能な変数バインディングを再エクスポートすることは、typescriptをまったく使用できないのですか?何か間違っていますか?
これは、typescriptがES6モジュール構文を完全にサポートしていないことを意味しますか?回避策があるのは良いことですが、変数に接頭辞を付ける必要はありません。しかし、それがうまくいく唯一の方法なら、私は選択肢がないと思う。 –
[this](https://github.com/Microsoft/TypeScript/issues/1215#issuecomment-168963929)によれば、生成されたコードが特定のes5であれば動作する可能性があります。これは、ターゲットを設定してから= es5。 –