TypeScript 静态类成员名为'constructor'的错误应该保持一致,

hts6caw3  于 6个月前  发布在  TypeScript
关注(0)|答案(2)|浏览(43)

TypeScript版本: 3.7.0-dev.20190831
搜索词: class, constructor, static, computed, quoted
代码

class A { static constructor() {} }
class B { static "constructor"() {} }
class C { static ["constructor"]() {} }

预期行为:

尽管它可能与非标准扩展(如#265)混淆,但我认为对待所有情况都一样会更少令人困惑,因为与非静态["constructor"]不同,在运行时没有区别。

实际行为:

AB(带#31949)得到一个'static' modifier cannot appear on a constructor declaration.诊断。

** playground链接:**

http://www.typescriptlang.org/play/#code/MYGwhgzhAECC0G9oQC5hQS2NYB7AdqgE4CuwKuRAFAJSIC+09AUKJDAEKLJqbYBEeQilLlK-WgyatwUaAGFuqdFmgBtQQWJkKRfgF1JCRiyA

相关问题:#31020,eslint/eslint#12110

w3nuxt5m

w3nuxt5m1#

我不明白你在这里期望的行为。你期望在所有3个例子中都出现错误,还是完全没有错误?
就我所理解的,这3个例子中都没有声明实际的构造函数,对吗?

67up9zun

67up9zun2#

我不明白你在这里期望的行为。你期望在所有3个情况下都出现错误,还是完全没有错误?
我认为任何一致的行为都是好的。我个人更喜欢没有错误,因为即使有点令人困惑,这3种情况都是有效的JS,而禁止令人困惑的代码更好地适应了linter。
就我所理解的,这3个例子中没有一个声明实际的构造函数,对吗?
是的,这3个例子都等同于 Class.constructor = function() {}

相关问题