由于在 class 中使用了 #私有函数,居然,居然就过不去了~~
class A {
#show() {
console.log(11)
}
}
3.8.3 报错
Class private methods are not enabled. Please add @babel/plugin-transform-private-methods to your configuration.
由于在 class 中使用了 #私有函数,居然,居然就过不去了~~
class A {
#show() {
console.log(11)
}
}
3.8.3 报错
Class private methods are not enabled. Please add @babel/plugin-transform-private-methods to your configuration.
Typescript 是用 private 关键字啊。
什么情况下会在typescript 中使用 # 去修饰私有成员变量?
我会确认下3.8.1的行为。
另外,这个报错是构建脚本时候,还是编辑器下报的错误?
@dumganhar ts是允许使用所有的合法js语法的。只是cocos用的编译器很老,没办法支持新的语法,比如using之类的巴拉巴拉。这些都是小问题。有个大问题就是强烈建议预览的时候能不能不要使用await/async的polyfill啊。调试的时候贼麻烦。release下用户可以选择是否打包polyfill也就罢了。不过我现在是编辑器预览,没有使用polyfill也还行,但是有个别的问题。话说在编辑器里面运行 能不能修一修。感觉很好修啊,一修就修好了
对,有时间看看现在的趋势吧
typescript现在都5.5了, 还在用3.8。。。
将引擎目录下 native/.browserslistrc 这个文件中的内容,改为
chrome 80 # We currently use V8@8.0.426.16
即,回退一下 Update .browserslistrc, chrome 116 by dumganhar · Pull Request #16680 · cocos/cocos-engine · GitHub 这个 PR 试试。
v8 升级到 11.6 后,理论上这个 targets 配置也要升级到 chrome 116 的。
目前发现此问题和 [bug] The generated JS code format was changed in v3.8.3 · Issue #17055 · cocos/cocos-engine · GitHub 都与这个 targets 配置修改有关。
[bug] The generated JS code format was changed in v3.8.3 · Issue #17055 · cocos/cocos-engine · GitHub 生成非法 js 代码,估计是触发了低版本 babel 内部某些bug。
而此问题的 #privateMemberFunction 的问题,应该是低版本 babel 对高版本 targets 的兼容性没有做好。
我们先回退一下这个 targets 配置吧。
这个有历史原因了,好像是说想竟可能保持编辑器预览环境跟发布后的环境的一致性,避免预览没问题,发布的时候有问题。
希望官方升级下ts版本吧
用polyfill和不用polyfill会有不一致的情况吗?如果会有不一致的情况,那也应该是polyfill实现的问题吧?主要是现在4202年了,感觉是不是可以重新审视一下这个问题了
Creator 3.8 现在的 typescript 是 4.9.5 版本,之所以定在这个版本,是因为 openharmony 他们的支持的 typescript 最高版本是 4.9.5,如果我们升级到 5.x,openharmony 的 AOT 模式就会有问题。
嗯,麻烦去 github 建一个 issue 吧,我后续跟进一下。
原来如此,那么openharmony升级,你们也可以跟着升级了吧?
为啥大家都急着升级ts?这里有啥比较实用的特性吗?
一直用的4.9.5,好像没看到什么值得用的新特性
漂亮,感谢,虽然因为项目着急,把所有 # 私有变量重写了。