TypeScript - Каков синтаксис массива объектов, которые являются потомками абстрактного класса? - PullRequest
0 голосов
/ 10 июня 2018

У меня есть эта иерархия наследования TypeScript, Person является базовым абстрактным классом.В то время как класс Man и класс Woman являются потомками абстрактного класса Person.Абстрактный класс Person имеет свойство с именем _children, которое является массивом абстрактного объекта Person.Мне нужно добавить массив детей в мой класс «Женщина и мужчина».Но я не могу добавить объект Array of the Person, потому что он абстрактный.Вместо этого мне нужно добавить объекты-потомки «Мужчина и женщина» в массив.Не могли бы вы сказать мне, каков синтаксис этой конструкции?Поэтому мне нужен массив, который может содержать объекты «Мужчина и женщина».

Когда я пытаюсь сделать это:

private children: Person[] = [this.womanA, this.manB, this.womanD, this.manC]; 
private manD: Man = new Man(this.children, 'Lyngby');

Я получаю сообщение об ошибке: Uncaught ReferenceError: Person не определен в Object../src/app/_models/Man.ts

abstract class Person {
    private _children: Person[];    
    constructor(children: Person[]) {
        this._children = children;
    }
}

export class Woman extends Person {
    private _shoesize: number;
    constructor(children: Person[], shoesize: number) {
        super(children);
        this._shoesize = shoesize;
    }
}

export class Man extends Person {
    private _favteam: string;
    constructor(children: Person[], favteam: string) {
        super(children);
        this._favteam = favteam;
    }
}
...