在TypeScript中,它只能重载构造函数类型签名,但不能重载实现。这背后有原因吗?我认为像Java一样重载构造函数非常有用。例如,向量的定义可以是结束坐标,或开始和端点或两个向量等等。 TypeScript中的当前方法非常混乱。那么为什么没有打字稿呢?
答案 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是:它在技术上可行,但会打破设计目标。 感谢参与讨论的每个人。