angular - Hur man undviker att upprepa basklassens konstruktörsparametrar i en härledd klass i TypeScript, Angular2?


@Injectable()
export class APIService {
  constructor(private http: Http) {
  }

}


@Injectable()
export class CourseAPIService extends APIService{

  constructor(private http2: Http){
    super(http2);
  }
}

Jag har baseclass som APIService som har Http som konstruktörparameter, tyvärr måste jag skicka den igen i subklassen CourseAPIService. Snälla hjälp mig om det finns någon lösning ...?

Svar #1

Du kan ta bort konstruktorn helt från CourseAPIService om du inte använder private http2-egenskapen i CourseAPIService.

Om du vill använda Http-tjänsten i CourseAPIService kan du markera http-egenskapen som protected i APIService och dela den med CourseAPIService.

@Injectable()
export class APIService {
  constructor(protected http: Http) {
  }
}

Men om du definierar en konstruktor för CourseAPIService måste du anropa dess basklasskonstruktor med super och skicka nödvändiga argument.

Svar #2

Såvitt jag vet är svaret nej. Du måste kalla på super() från den härledda klassen. Så om din basklass har beroenden, måste din härledda klass injicera samma beroenden och skicka dem till super()-metoden.

Relaterade artiklar