Creator3.x 大倒退了吗?

以前在2.4.x版本的时候, 我在定义了一些枚举:如下

export enum AProp
{
Begin = 0,

End,

}

export enum BProp
{
Begin = AProp.End,

End,

}

这样在修改AProp定义的时候 BProp的索引会自动调整

可是这样写法在3.4.2中,编辑器抱怨了: SyntaxError: unknown: Enum member must have initializer.

只能像下面这样写:
export enum BProp
{
Begin = 1,

End,

}

必须指定常量初始值。 如果像我那样的枚举依赖有多层的话,修改起来就会比较麻烦 要自己计算一次!!!!!

引擎组的老大,看看能否回到2.4.x 那样的语法支持!!!

我也遇到了,官方来看看

ts 的规范里边已经明确了,计算所得项 后面的枚举值, 会因为无法正确获得初始值而报错,可以参考下

https://ts.xcatliu.com/advanced/enum.html#常数项和计算所得项

那为什么以前2.4.x版本的时候 同样的写法没有报错呢? 难道这个规则是新出的吗?


从第一种说明来看 我示例中AProp中定义的都是常量枚举。
而对BProp而言,AProp.End 正是对之前定义常量枚举的引用。 所以B.Begin也是常量枚举。

再就是为什么以前2.4.x版本的时候 同样的写法没有报错呢?

嗯,抱歉,我比对了下两个版本的差异,2.4.x 使用的是 tsc 编译器,3.x 使用的是 babel,看起来是 babel 插件上的一个 bug,已经给官方反馈了 issue 了

1赞

辛苦,静候佳音!!!

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。