Bug报告
🔎 搜索词
静态初始化装饰器运行时
🕗 版本与回归信息
- 在4.8.4中出现
- 在版本4.5.5和4.6.4之间发生变化,当静态属性开始转换为static initialization blocks时
⏯ Playground链接
带有相关代码的Playground链接
💻 代码
const dec: ClassDecorator = cls => cls;
@dec class A { static x = new A }
🙁 实际行为
没有产生预期的编译错误,但这会生成一个运行时错误:“undefined不是一个构造函数”。
🙂 预期行为
要么产生编译错误,要么不产生运行时错误。
1条答案
按热度按时间qnakjoqk1#
相同的错误。
ts代码。
在
ES2022
中。当我这样写
static readonly inst: App = new App()
时,js文件会编译成
static inst = new _a();
,错误是
undefine is not a constructor
。我手动将js文件更改为
static inst = new App()
。没问题,一切都很好。
最后我不得不将其更改为这个
static readonly inst: App = new this();
。