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"]
不同,在运行时没有区别。
实际行为:
A
和B
(带#31949)得到一个'static' modifier cannot appear on a constructor declaration.
诊断。
** playground链接:**
http://www.typescriptlang.org/play/#code/MYGwhgzhAECC0G9oQC5hQS2NYB7AdqgE4CuwKuRAFAJSIC+09AUKJDAEKLJqbYBEeQilLlK-WgyatwUaAGFuqdFmgBtQQWJkKRfgF1JCRiyA
2条答案
按热度按时间w3nuxt5m1#
我不明白你在这里期望的行为。你期望在所有3个例子中都出现错误,还是完全没有错误?
就我所理解的,这3个例子中都没有声明实际的构造函数,对吗?
67up9zun2#
我不明白你在这里期望的行为。你期望在所有3个情况下都出现错误,还是完全没有错误?
我认为任何一致的行为都是好的。我个人更喜欢没有错误,因为即使有点令人困惑,这3种情况都是有效的JS,而禁止令人困惑的代码更好地适应了linter。
就我所理解的,这3个例子中没有一个声明实际的构造函数,对吗?
是的,这3个例子都等同于
Class.constructor = function() {}
。