地址如下:
https://www.babeljs.cn/docs/babel-preset-typescript
希望官方能尽快升级,不然产生的废代码太多,影响包体大小,2.X如果可以的话,希望也能升级一下(不抱多大希望,哈哈哈)
@jare
地址如下:
https://www.babeljs.cn/docs/babel-preset-typescript
导出的常量枚举生成对象,还是不优,但是比之前生成的代码要少
用Babel试了一下
源文件如下:
export const enum TestExport {
Field1 = 1,
Field2 = 2,
Field3 = 3,
Field4 = 4,
Field5 = 5,
Field6 = 6,
Field7 = 7,
}
const enum TestNoExport {
Field1 = 1,
Field2 = 2,
Field3 = 3,
Field4 = 4,
Field5 = 5,
Field6 = 6,
Field7 = 7,
}
console.log(TestNoExport.Field1);
"optimizeConstEnums": false
生成代码如下:
exports.TestExport = void 0;
let TestExport;
exports.TestExport = TestExport;
(function (TestExport) {
TestExport[TestExport["Field1"] = 1] = "Field1";
TestExport[TestExport["Field2"] = 2] = "Field2";
TestExport[TestExport["Field3"] = 3] = "Field3";
TestExport[TestExport["Field4"] = 4] = "Field4";
TestExport[TestExport["Field5"] = 5] = "Field5";
TestExport[TestExport["Field6"] = 6] = "Field6";
TestExport[TestExport["Field7"] = 7] = "Field7";
})(TestExport || (exports.TestExport = TestExport = {}));
var TestNoExport;
(function (TestNoExport) {
TestNoExport[TestNoExport["Field1"] = 1] = "Field1";
TestNoExport[TestNoExport["Field2"] = 2] = "Field2";
TestNoExport[TestNoExport["Field3"] = 3] = "Field3";
TestNoExport[TestNoExport["Field4"] = 4] = "Field4";
TestNoExport[TestNoExport["Field5"] = 5] = "Field5";
TestNoExport[TestNoExport["Field6"] = 6] = "Field6";
TestNoExport[TestNoExport["Field7"] = 7] = "Field7";
})(TestNoExport || (TestNoExport = {}));
console.log(TestNoExport.Field1);
"optimizeConstEnums": true
生成代码如下:
exports.TestExport = void 0;
var TestExport = {
Field1: 1,
Field2: 2,
Field3: 3,
Field4: 4,
Field5: 5,
Field6: 6,
Field7: 7
};
exports.TestExport = TestExport;
console.log(1);
插件版本早点升上去吧,项目里面如果大量用到枚举常量的话,可以减少包体大小。
不必死守Babel,或者提供一个选项让用户自主切换代码编译器,这个Babel,哎。。。
我们项目里协议枚举生成的代码量估计占到了代码量的5%,太大了,另外TsLib没有做优化,每个文件都有一份,我自己在编译后修改合并,可以减少10%代码。
嗯。网络协议的消息id枚举,表格id自定的key之类的枚举,游戏内各种事件枚举,等等 生成的废代码量巨大。我这个帖子,官方直接忽略了,算了,不骂了
如果是pb可以用json格式,小游戏就不行了
帮你提交了 issue
非常感谢!
问下,这个升级3.8上有可能上吗?
这个现在支持了吗?我看那个issue都关闭了,但我测了3.8.3,还是不行
已经支持了。不过我们再确认下效果。
我仔细测试了下,只支持文件内部非export的静态枚举。
一旦添加export就不行了,没法跨文件。
这样很鸡肋啊。
3.8.3 只打2DUI相关的,再加上spine的web包空就有1.8MB,人都傻了,2.4.x的才900K