如何在组件中使用多个构造函数?目前我收到错误:
'不允许多个构造函数实现'。
questions: any[];
constructor( service: QuestionSignupStepOneService ) {
this.questions = service.getQuestions();
}
constructor( service: QuestionSignupStepOneAService ) {
this.questions = service.getQuestions();
}
无论如何要简化我想要做的事情吗?代码编译正确,但只会运行第一个服务,忽略第二个。
答案 0 :(得分:5)
使用相同参数制作多个构造函数并不合理,除非它们具有不同的类型,在Typescript中您可以执行以下操作:
class Foo {
questions: any[];
constructor(service: QuestionSignupStepOneService, param2?: Param2Type) {
this.questions = service.getQuestions();
if(param2){
console.log(param2);
}
}
}
这等于两个构造函数,第一个是new Foo(service)
,第二个是new Foo(service, param2)
。
使用?
表明该参数是可选的。
如果您希望两个构造函数具有相同的参数但是对于不同的类型,您可以使用它:
class Foo {
questions: any[];
constructor(service: QuestionSignupStepOneService | QuestionSignupStepOneAService) {
if(typeof(service) === QuestionSignupStepOneService){
this.questions = service.getQuestions();
}
else{
this.questions = service.getDifferentQuestions();
}
}
}
答案 1 :(得分:0)
我最后得到了这个(语法上是正确的,但尚不知道它是否可以工作):
constructor(private _myService: MyService, private _myOtherService: MyOtherService) {
super(_myService);
this.dataSource = new MyThingDataSource(this._myOtherService);
}