【发布时间】:2017-01-11 10:00:07
【问题描述】:
在 TypeScript 中,只能重载构造函数类型签名,而不能重载实现。这背后有什么原因吗?我认为像 Java 这样的重载构造函数非常有用。例如,向量的定义可以是结束坐标,或者起点和终点,或者两个向量等等。 目前 TypeScript 中的方法非常混乱。那么为什么打字稿没有呢?
【问题讨论】:
-
你得问问语言设计者,其他人只能推测。见a similar case。
-
@torazaburo typescript 不仅仅是一个预处理器。查看编译器的代码,它与其说是预处理器,不如说是一种发出 Javascript 的语言(这是 javascript VM 的“字节码”。如果有任何较低级别的东西,它可以发出)。它的实现方式与许多其他编程语言一样。
-
@torazaburo Javascript 已经完成,打字稿可以模拟任何东西。他们选择是完全不同的事情。
-
@torazaburo 我们不要在这里混合我们的苹果和橙子。当然 TS 不能改变底层语言的性质,但它们可以模拟任何更高级别的功能,例如适当的过载。但他们不想这样做,因为让 TS 接近 JS 是一个明确的目标。
-
@SimonMeskens 不一定,TS 可以作为开始在构造函数/合并函数中插入逻辑,检查参数的数量,然后相应地执行特定的逻辑。然后我们至少根据参数计数有更好的重载。而且我敢肯定,如果我们正确地为编译器提供相关的自定义类型保护,我们甚至可以进行一些类型检查。我并不是说它总是简单而高效,但没有什么是不可能的。
标签: typescript constructor overloading