Próbuję ponownie wyeksportować zmienną za pomocą składni modułu es6, a następnie ją zmienić i zobaczyć zmianę odzwierciedloną w ostatecznym imporcie. Ale nie działa zgodnie z oczekiwaniami. Patrz poniższy przykład:Ponowne eksportowanie zmiennego zmiennej e-mail w module 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"
}
}
Wynik biegu:
$ node out/c.js
1
1
Spodziewam ostateczna console.log wydrukować 2, w celu odzwierciedlenia aktualizacji, ale tak nie jest. Jednak jeśli skompiluję ten sam przykład z Babel, to działa. Czy ponowne eksportowanie zmiennych wiązań zmiennych nie działa w ogóle z pismem maszynowym lub czy robię coś nie tak?
Czy to oznacza, że maszynopis nie obsługuje w pełni składni modułu ES6? Dobrze jest mieć obejście, ale wolałbym nie dodawać zmiennych. Ale jeśli jest to jedyny sposób, w jaki zadziała, myślę, że nie mam wyboru. –
Zgodnie z [this] (https://github.com/Microsoft/TypeScript/issues/1215#issuecomment-168963929) może działać, jeśli wygenerowany kod był specyficzny dla es5, co moim zdaniem może być, ponieważ ustawiłem cel = es5. –