Cocos3一个奇葩的TS编译设定,求官方解惑!

如果在类里设置了类似 private isVideoLoading这样的设置以后,就会在编译后的js文件的构造函数里出现对应的如上图红框中的degfine void 0的函数调用。为什么要这样多此一举的设置为undefined呢????

这会导致一个问题就是,如果基类定义属性是protected a: baseAClass, 那么子类我想重新定义为protected a: subAClass,那么基类构造函数里创建了a,子类构造函数又重新把它复制的undefined。

是因为什么特别的原因一定要这样设置吗?? 这个编译和cocos2里的不一样,以前用tsc编译是不会这样的 @panda @jare

对比一下cocos2,看出来区别就是,如果cocos2里的class只定义了属性,没有在定义属性的时候设置初始值的时候,constructor里是不会多此一举的将这个属性设为undefined的。cocos3就会这样!!!!

https://docs.cocos.com/creator/3.0/manual/zh/scripting/language-support.html

看 编译选项的 allowDeclareFields

现在的做法是如果你不想初始化,就在属性前面加上 declare 表示只声明不初始化

哇,大佬牛逼,果然前面加个declare就完美达到我想要的效果了

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