class Base { public addListener(listener: (store: this) => void) { this.listeners.push(listener); } private listeners: ((store: this) => void)[] = []; } class Derived extends Base { public data: number[] = []; } const instance = new Derived(); instance.addListener((store) => console.log(store.data));