可以为Closure Compiler输出TypeScript输出注释吗?

Mal*_*lki 5 javascript obfuscation google-closure-compiler typescript

我正在使用TypeScript,我想使用Closure-Compiler来缩小和混淆我在构建TS代码后得到的JS输出.

我读到GCC能够根据类型定义进行混淆.据我所知(如果我错了请纠正我),这意味着如果我的代码上有类型注释,那么GCC将使用它们来进行更好的混淆.

例如,对于obj.somePropGCC,当前someProp在我的代码中查找属性名称的所有实例,而不考虑它所在的对象,并将所有这些实例替换为相同的混淆名称(例如o.a).
但是如果我在我的代码上有类型注释,GCC将能够知道哪个对象属于哪种类型并相应地对其进行模糊处理 - 因此两个不同类型的相同属性名称将被混淆为两个不同的名称.

问题:

  • 我理解正确吗?
  • "类型安全"混淆是一件好事吗?
    我的意思是,它有什么好处?它似乎不会对生成的文件大小产生影响,甚至可能对gzip压缩文件大小产生负面影响(因为不同类型的密钥可能有更多不同).
  • 我可以使用TypeScript以某种方式自动创建GCC注释吗?
    由于TS已经是类型安全的,我相信它是可能的,但我怀疑它是一个功能.它可能需要TS编译器内部的知识.有什么见解吗?

编辑

我其实刚发现这个这个.我会检查出来并尽快发布更新.

Cha*_*rth 3

您的理解大部分是正确的。基于类型的重命名(需要该--use_types_for_optimization标志)的优点是,与 extern 中的任何属性命名相同的属性不再被阻止重命名。

var foo = {};
foo.src = 'test'; //only renameable with type based optimizations
Run Code Online (Sandbox Code Playgroud)

至于打字稿,闭包编译器正在被修改以理解打字稿风格的类型符号。然而,这个项目还处于早期阶段。您链接的插件是我目前所知的最佳选择。

Typescript 和 Closure-Compiler 中的类型系统目前并不完全兼容。这也是正在积极开展的工作。