我正在使用Typescript,最近我将转换选项更改为以ES6为目标,而不是ES5。
我使用的某种语法在ES5下始终可以正常运行,但是在更改目标之后,我开始在(Firefox)浏览器控制台中收到此错误:
Javascript ES6 TypeError: Class constructor Client cannot be invoked without 'new'
我将代码更改为适合ES6的语法,从而解决了该问题,但是我不了解浏览器如何首先知道会抛出此错误,因为之前使用的代码完全相同。
浏览器中的javascript解析器是否扫描代码库的 other 部分,并使用ES6查看它们是 re ,然后拒绝此行,因为它不匹配ES6代码其他地方?
答案 0 :(得分:1)
JavaScript没有输入任何特定的“模式”。
实际上,实际情况是您在声明class Client
。这就是ES6语法,它带有特殊的警告,您必须使用new Client
来实例化它。现在,您的编译器将此编译为向后兼容的function Client() ...
。显然,您可以不使用function
来呼叫new
。那就是你在某个地方所做的。
因此,从class
到function
的编译掩盖了该错误。但是当将class
保留为class
时(因为ES6目标模式不需要将其简化为function
),浏览器实际上正在处理class
该错误。