Sto tentando di riesportare una variabile utilizzando la sintassi del modulo es6, quindi cambiarla e vedere la modifica riflessa nell'importazione finale. Ma non funziona come previsto. Vedere l'esempio di seguito:Dattiloscritto moduli es6 riesportare la variabile mutabile vincolante
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"
}
}
Risultato di periodo:
$ node out/c.js
1
1
mi aspetto il console.log finale per stampare 2 al fine di riflettere l'aggiornamento, ma non è così. Tuttavia, se compilo lo stesso esempio con Babel funziona. La riesportazione dei bind delle variabili mutabili non funziona affatto con dattiloscritto o sto semplicemente facendo qualcosa di sbagliato?
Ciò significa che dattiloscritto non supporta completamente la sintassi del modulo ES6? È bello avere un work-around, ma preferirei non dover prefisso le variabili. Ma se è l'unico modo in cui funziona, suppongo di non avere altra scelta. –
Secondo [questo] (https://github.com/Microsoft/TypeScript/issues/1215#issuecomment-168963929) potrebbe funzionare se il codice generato fosse es5 specifico, il che penso potrebbe essere dato che ho impostato il target = ES5. –