class T { a: A; b: any } class L extends T { m() { this.a } } class X extends L { a: 'a' | 'b' b: number m2() { this.a } }