为什么TypeScript中没有重载的构造函数实现?

时间:2016-09-03 12:12:09

标签: typescript constructor overloading

在TypeScript中,它只能重载构造函数类型签名,但不能重载实现。这背后有原因吗?我认为像Java一样重载构造函数非常有用。例如,向量的定义可以是结束坐标,或开始和端点或两个向量等等。 TypeScript中的当前方法非常混乱。那么为什么没有打字稿呢?

2 个答案:

答案 0 :(得分:4)

是的,原因就在于它,原因是javascript不支持对方法或成员使用相同的名称。

考虑以下打字稿:

class MyClass {
    myMethod() {}
    myMethod(str: string) {}
}

编译版本为:

var MyClass = (function () {
    function MyClass() {
    }
    MyClass.prototype.myMethod = function () { };
    MyClass.prototype.myMethod = function (str) { };
    return MyClass;
}());

如您所见,myMethod的第二个实现正在取代第一个实现 因此,您只能重载签名,然后您需要提供满足所有已声明签名的单个实现。

答案 1 :(得分:0)

我提交了一个issue,并且outcom是:它在技术上可行,但会打破设计目标。 感谢参与讨论的每个人。