TypeScript 当被装饰类的静态属性初始化器引用该类时,运行时错误,

j0pj023g  于 6个月前  发布在  TypeScript
关注(0)|答案(1)|浏览(81)

Bug报告

🔎 搜索词

静态初始化装饰器运行时

🕗 版本与回归信息

⏯ Playground链接

带有相关代码的Playground链接

💻 代码

const dec: ClassDecorator = cls => cls;
@dec class A { static x = new A }

🙁 实际行为

没有产生预期的编译错误,但这会生成一个运行时错误:“undefined不是一个构造函数”。

🙂 预期行为

要么产生编译错误,要么不产生运行时错误。

qnakjoqk

qnakjoqk1#

相同的错误。

//...
export class App {
    // static readonly inst: App = new App(); //  static inst = new _a(); compiled in js file
    static readonly inst: App = new this();
    // other code... run
}
App.inst.run();

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();

相关问题