Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular typescript中的扩展语法_Angular_Typescript_Ecmascript 6 - Fatal编程技术网

Angular typescript中的扩展语法

Angular typescript中的扩展语法,angular,typescript,ecmascript-6,Angular,Typescript,Ecmascript 6,我试图在Angular项目中扩展一个类,我想使用ES2015的rest/spread语法将参数传递给父类,就像 但是我得到一个错误,提供的参数与调用目标的任何签名都不匹配,我的应用程序无法编译 我做了。有人知道如何在不必显式编写父类方法的参数的情况下使其工作吗 更新:正如Teddy Sterne所指出的,我实际上不需要将其用于构造函数,因为它具有相同的参数。实际上,我想用它来表示一个返回可观察值的方法。我希望通过重写该方法并返回super.parentMethod(…args).catch(/*

我试图在Angular项目中扩展一个类,我想使用ES2015的rest/spread语法将参数传递给父类,就像

但是我得到一个错误,提供的参数与调用目标的任何签名都不匹配,我的应用程序无法编译

我做了。有人知道如何在不必显式编写父类方法的参数的情况下使其工作吗


更新:正如Teddy Sterne所指出的,我实际上不需要将其用于构造函数,因为它具有相同的参数。实际上,我想用它来表示一个返回可观察值的方法。我希望通过重写该方法并返回super.parentMethod(…args).catch(/*处理错误*/)

来捕获错误。如果
子项的构造函数参数与
父项的构造函数参数完全相同,则无需指定构造函数。父级所需的依赖项将被注入,父级的构造函数将被隐式调用

class父类{
构造函数(dep1:dep1,dep2:dep2){}
}
班级儿童班{
}
如果子级具有其他依赖项,则必须重新指定它们,然后将它们传递给子级构造函数中的父级构造函数

class父类{
构造函数(dep1:dep1,dep2:dep2){}
}
班级儿童班{
构造函数(dep1:dep1,dep2:dep2,dep3:dep3){
超级(dep1,dep2);;
}
}

本期中提出并回答了这个问题:


假设是因为类型检查,你是对的。假设父构造函数需要固定数量的参数。在声明
super(…args)
时,编译器不知道传递的参数的实际数量。因此,它将其标记为不安全

Greeter
构造函数接收一个
字符串
,将
任何[]
数组传递到一个需要
字符串
的函数中,这是不可能的。你想干什么?这适用于ES6,但不适用于typescript。我猜这是因为类型检查?如果你只做
super(args)
,它能工作吗?@parth他没有将数组传递给super。他正在转发函数参数。我怀疑这是一个TypeScript限制。你是对的,我实际上不需要将其用于构造函数,而需要用于返回可观察值的方法。我希望通过重写该方法并返回super.parentMethod(…args).catch(/*处理错误*/)来捕获错误
constructor(...args) {
    super(...args);
}