Я относительно новичок в TypeScript. У меня есть необходимость в реализации двух маршрутных охранников, которые имеют общую функцию и состояние.DRYing up Angular2 TypeScript Class
Когда я пытаюсь расширить класс для инъекций с помощью конструктора, результирующий класс не получит экземпляры частных членов.
надуманный пример:
// guard-base.ts
@Injectable()
export abstract class GuardBase {
constructor(
private sharedState: SharedState,
) {}
sharedMethod(): boolean {. . .}
}
// authentication-required.guard.ts
@Injectable()
export class RouteGuard extends GuardBase implements CanActivate {
canActivate(): Promise<boolean> {
console.log(this);
// this.sharedState equals undefined at this point
}
}
Должен ли я предоставить аргументы конструктора в RouteGuard
классе? Я хотел бы сделать инкапсуляцию всех импортов и общего метода в базовый класс. Это возможно? Если нет, то каков наилучший способ выполнить то, что я хотел бы сделать?
Gotcha. Хм. Я надеялся на что-то более элегантное. Будет ли у меня такая же проблема при расширении не-абстрактного класса? – Brandon
@ Брэндон - да, это то же самое для всех классов, абстрактных или конкретных. – ps2goat
Благодарим вас за помощь. Это не совсем так сухо, как питон, который я писал, но он будет работать :) – Brandon