我正在使用Typescript 2.0
class Parent {
constructor(a, b, c, d, e) {
}
}
class Child extends Parent {
constructor(...args) {
super(...args); // this currently fails
}
}
以下看起来很麻烦。
class Child extends Parent {
constructor(a, b, c, d, e) {
super(a, b, c, d, e);
}
}
答案 0 :(得分:2)
事情是,编译的js很好:
6d4cd6e5cdd9
我不确定你为什么会收到这个错误 试试opening an issue,如果您这样做,请将该链接发布为评论。
似乎是这个问题:Support spread operator for arrays and tuples in function calls也是这个问题。
使用常规功能,您可以将它们转换为任何:
var Parent = (function () {
function Parent(a, b, c, d, e) {
console.log(a, b, c, d, e);
}
return Parent;
}());
var Child = (function (_super) {
__extends(Child, _super);
function Child() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i - 0] = arguments[_i];
}
_super.apply(this, args);
}
return Child;
}(Parent));
但是你不能通过function fn(a, b) { }
let a = [1, 2];
fn(...a); // Error: Supplied parameters do not match any signature of call target
(fn as any)(...a); // no error
电话来做到这一点
你可以说编译器在守护你,super
的内容可能会有...args
构造函数所期望的更少或更多的值,但是这样也不行:
Parent
由于:
rest参数必须是数组类型