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