Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sweet.js重命名Typescript输出中的顶级变量时该怎么办?_Typescript_Sweet.js - Fatal编程技术网

sweet.js重命名Typescript输出中的顶级变量时该怎么办?

sweet.js重命名Typescript输出中的顶级变量时该怎么办?,typescript,sweet.js,Typescript,Sweet.js,类型脚本编译 class ClassName { } 到 我通过sweet.JS运行JS代码,即使没有定义宏,它也会产生如下结果: var ClassName$659 = function () { function ClassName$663() { } return ClassName$663; }(); 我知道sweet.js不会重命名第一次出现的ClassName,如果没有使用顶级var,或者如果构造函数使用了不同的名称,但是执行这些操作的是Typescrip

类型脚本编译

class ClassName { }

我通过sweet.JS运行JS代码,即使没有定义宏,它也会产生如下结果:

var ClassName$659 = function () {
    function ClassName$663() {
    }
    return ClassName$663;
}();
我知道sweet.js不会重命名第一次出现的
ClassName
,如果没有使用顶级
var
,或者如果构造函数使用了不同的名称,但是执行这些操作的是Typescript编译器,而不是我

为什么这是个问题
  • 我不能再在HTML文件中使用
    ClassName
    。这不是我经常想做的事情,当然我也可以在没有能力的情况下做,但我仍然怀念拥有它
  • 到目前为止,我想要使用的宏不需要任何卫生重命名。但现在看来,我必须用自己的脚本撤销重命名。源映射不会很容易起作用,因为我已经需要一个用于typescript-->javascript转换的源映射 我的问题 有没有办法在sweet.js中禁用卫生重命名?有没有更好的办法来处理这个问题

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

    没有

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

    不确定。作为黑客,你可以用一个 搜索类名$xxx,然后添加

    var ClassName = ClassName$xxx;
    

    正如@AnthonyCalandra所建议的,在sjs中使用--readable names标志解决了我的问题

    您还可以使用readableNames选项进行编译,该选项可以在任何可能的情况下清除卫生名称。谢谢@AnthonyCalandra。我的意思是我尝试了readableNames标志。事实上,@AnthonyCalandra,这很有效。我以前试过可读的名字,一定是做错了什么。这肯定是个bug,对吧?我的意思是,如果我从文档中逐字复制“let macros”代码,它会重命名顶级函数,使其不可调用(现有代码中的任何函数都不会知道它必须在已知的函数名中添加一个美元符号和一些随机数!),出于某种原因,它不会在浏览器的演示编辑器中进行顶级重命名,只有在节点下运行时才会进行。(惊讶!)@Michael这只是一种预感:Sweet.js切换到了一种新的扩展算法。也许新旧之间有区别。演示页面切换了吗?请注意,上述答案来自开关之前。
    var ClassName = ClassName$xxx;