3

打字稿编译

class ClassName { }

var ClassName = function () {
    function ClassName() {
    }
    return ClassName;
}();

我通过 sweet.js 运行该 JS 代码,即使没有定义宏,也会产生如下内容:

var ClassName$659 = function () {
    function ClassName$663() {
    }
    return ClassName$663;
}();

ClassName我知道如果不使用顶层var,或者如果构造函数使用了不同的名称,sweet.js 不会重命名第一次出现的,但它是 Typescript 编译器做这些事情,而不是我。

为什么这是一个问题

  1. 我不能再ClassName在 HTML 文件中使用。这不是我经常想做的事情,当然我可以在没有能力的情况下做,但我仍然想念拥有它。
  2. 到目前为止我想使用的宏不需要任何卫生的重命名。然而现在看来我必须用我自己的脚本撤消重命名。源映射不会轻易提供帮助,因为我已经需要一个用于 typescript --> javascript 转换的源映射。

我的问题

有没有办法在 sweet.js 中禁用卫生重命名?有没有更好的方法来处理这个问题?

4

2 回答 2

2

正如@AnthonyCalandra 建议的那样,使用带有 sjs 的 --readable-names 标志解决了我的问题。

于 2015-05-23T16:27:12.850 回答
1

有没有办法在 sweet.js 中禁用卫生重命名?

不。

有没有更好的方法来处理这个问题?

没有把握。作为 hack,您可以使用搜索 ClassName$xxx 的脚本对文件进行后处理,然后添加

var ClassName = ClassName$xxx;
于 2015-05-15T10:03:14.523 回答