interface Animal { animalStuff : any ; } interface Dog extends Animal { dogStuff : any ; } class AnimalHouse { resident ? : Animal ; constructor ( animal ) { this . resident = animal ; } } class DogHouse extends AnimalHouse { declare resident ? : Dog ; constructor ( dog ) { super ( dog ) ; } } let obj = new DogHouse ( { animalStuff : 1 , dogStuff : 2 } ) ; console . log ( obj . resident ) ; export { } ;