Javascript 如何强制TypeScript导出到JS输出的末尾?

Javascript 如何强制TypeScript导出到JS输出的末尾?,javascript,typescript,Javascript,Typescript,我使用了很多类似于以下的导出语句,通常用于在文件底部累积模块的导出: export { foo1 as bar1, foo2 as bar2, ... } 最近我了解到 let foo : number = 0; export { foo as bar } …与…完全不同 let foo : number; foo = 0; export { foo as bar } …因为后者在导出.bar中提供了未定义的内容。这是因为编译后的JavaScript在赋值之前有export语句export

我使用了很多类似于以下的导出语句,通常用于在文件底部累积模块的导出:

export { foo1 as bar1, foo2 as bar2, ... }
最近我了解到

let foo : number = 0;
export { foo as bar }
…与…完全不同

let foo : number; foo = 0;
export { foo as bar }
…因为后者在导出.bar中提供了未定义的内容。这是因为编译后的JavaScript在赋值之前有export语句exports.bar=foo。我觉得这很难凭直觉。我仔细阅读了TypeScript模块页面,但似乎没有对这种行为进行描述。它在那里吗


是否有一种方法可以强制输出的导出语句位于底部,而不是在声明之后立即执行?谢谢。

这听起来更像是TypeScript中的一个bug。为了将来参考,TypeScript 1.8编译了以下代码:

let foo : number; foo = 0;
export { foo as bar }
在此JavaScript中:

"use strict";
var foo;
exports.bar = foo;
foo = 0;
我用TypeScript 2.0 beta版试用了它,似乎可以修复它:

"use strict";
var foo;
exports.bar = foo;
exports.bar = foo = 0;

您是对的,随后,当我使用最新的每夜导出时,对导出的每次访问(独立于范围或执行点)都将更新导出对象。TS的模块页面应该说:“在使用稳定TS时,导出除函数文本或类型以外的任何内容时都要小心”。