¿Tipo de constructor de clase en mecanografiado?

¿Cómo puedo declarar unclass tipo, para asegurarme de que el objeto es un constructor de una clase general?

En el siguiente ejemplo, quiero saber qué tipo debo dar aAnimalClass para que pueda serPenguin oLion:

class Animal {
    constructor() {
        console.log("Animal");
    }
}

class Penguin extends Animal {
    constructor() {
        super();
        console.log("Penguin");
    }
}

class Lion extends Animal {
    constructor() {
        super();
        console.log("Lion");
    }
}

class Zoo {
    AnimalClass: class // AnimalClass could be 'Lion' or 'Penguin'

    constructor(AnimalClass: class) {
        this.AnimalClass = AnimalClass
        let Hector = new AnimalClass();
    }
}

Por supuesto, elclass type no funciona, y de todos modos sería demasiado general.

Respuestas a la pregunta(2)

Su respuesta a la pregunta