javascript - 闭包编译器 use_types_for_optimization 什么都不做
问题描述
设置use_types_for_optimization
为 true 对我的这段代码几乎没有影响。输出文件相同或大小相同,但在一些地方具有不同的属性名称。无论我做什么,所有属性名称在所有对象中都是唯一的。
我有两个这样的例子,但是要编写很多代码。一个例子是 ES6 class
,另一个是全局对象。我用过@typedef
和@type
。我试过使用@interface
and @record
。没有任何区别。
以下是我尝试的基本语法的一些示例:
class myClass {
constructor () {
/** type {boolean} */
this.prop = true;
}
}
/** @typedef {{prop:(boolean)}} */
let myObj = {prop:true};
我必须做什么才能让 Closure Compiler 使类型中的属性仅在该类型中唯一?看起来应该很简单,但我还没有弄清楚。
解决方案
如果属性被重命名,那么use_types_for_optimization
就是在做它打算做的事情。没有它,任何与外部文件中的属性同名的属性都不能重命名。
如果已知不同对象上的两个属性彼此没有关系,编译器将尝试将它们重命名为相同的名称。这会导致更小的 gzip 输出。
如果您尝试重命名属性但确保每种类型都有唯一的属性名称,则需要对编译器进行自定义构建。特别是,您需要禁用“AmbiguateProperties”通道。
推荐阅读
- c# - 在 ASP.NET MVC 列中创建 Html 表新行
- c - c中的时间复杂度(嵌套循环)
- google-api - Google 日历 Api 日期过滤器在 apex 中不起作用
- python - 如何从网页python中获取所有可复制的文本
- flutter - AndroidManifest.xml 文件抛出集合错误
- matlab - 在 Matlab 中使用 Golden Search 方法进行优化
- c# - 如何将对象从客户端发送到服务器并反向?
- certificate - 证书上的“签名算法”到底是什么意思?使用哪种签名算法来签署我的证书?
- c++ - 不能用作函数,返回前的最后一行是错误
- android - 如何配置 Android Gradle 项目以过滤资源?