如何处理 sweet.js 重命名 Typescript 输出中的顶级变量?
What to do about sweet.js renaming top-level variables in Typescript output?
Typescript 编译
class ClassName { }
至
var ClassName = function () {
function ClassName() {
}
return ClassName;
}();
我 运行 JS 代码通过 sweet.js,即使没有定义宏,也会产生如下内容:
var ClassName9 = function () {
function ClassName3() {
}
return ClassName3;
}();
我知道如果未使用顶级 var
,或者如果构造函数使用了不同的名称,sweet.js 将不会重命名第一次出现的 ClassName
函数,但做这些事情的是 Typescript 编译器,而不是我。
为什么会出现问题
- 我无法再在 HTML 文件中使用
ClassName
。这不是我经常想做的事情,当然我可以在没有能力的情况下做,但我仍然怀念拥有它。
- 到目前为止我想使用的宏不需要任何卫生重命名。但现在看来我必须使用自己的脚本撤消重命名。源映射不会轻易提供帮助,因为我已经需要用于打字稿 --> javascript 转换的源映射。
我的问题
有没有办法在 sweet.js 中禁用卫生重命名?有没有更好的方法来处理这个问题?
Is there a way to disable hygienic renaming in sweet.js?
没有
Is there a better way to deal with this issue?
不确定。作为 hack,您可以 post-使用脚本处理文件
搜索 ClassName$xxx 然后添加
var ClassName = ClassName$xxx;
按照@AnthonyCalandra 的建议,将 --readable-names 标志与 sjs 一起使用,解决了我的问题。
Typescript 编译
class ClassName { }
至
var ClassName = function () {
function ClassName() {
}
return ClassName;
}();
我 运行 JS 代码通过 sweet.js,即使没有定义宏,也会产生如下内容:
var ClassName9 = function () {
function ClassName3() {
}
return ClassName3;
}();
我知道如果未使用顶级 var
,或者如果构造函数使用了不同的名称,sweet.js 将不会重命名第一次出现的 ClassName
函数,但做这些事情的是 Typescript 编译器,而不是我。
为什么会出现问题
- 我无法再在 HTML 文件中使用
ClassName
。这不是我经常想做的事情,当然我可以在没有能力的情况下做,但我仍然怀念拥有它。 - 到目前为止我想使用的宏不需要任何卫生重命名。但现在看来我必须使用自己的脚本撤消重命名。源映射不会轻易提供帮助,因为我已经需要用于打字稿 --> javascript 转换的源映射。
我的问题
有没有办法在 sweet.js 中禁用卫生重命名?有没有更好的方法来处理这个问题?
Is there a way to disable hygienic renaming in sweet.js?
没有
Is there a better way to deal with this issue?
不确定。作为 hack,您可以 post-使用脚本处理文件 搜索 ClassName$xxx 然后添加
var ClassName = ClassName$xxx;
按照@AnthonyCalandra 的建议,将 --readable-names 标志与 sjs 一起使用,解决了我的问题。