Open
Description
TypeScript Version: 3.4.3
or 3.5.0-dev.20190427
Search Terms: keyof
, anonymous class
Code
type AnyClass = new (...args: any[]) => any;
const mixin = <T extends AnyClass>(Class: T) => class extends Class {a: string};
const Cl = mixin(class {b = 123});
const inst = new Cl();
inst. // <- IntelliSense works fine here and suggests 'a' and 'b' properties
type Keys = keyof typeof inst; // Keys = string | number
Expected behavior:
Keys
to be equal to 'a' | 'b'
Actual behavior:
Keys
to be equal to string | number
Playground Link: ts-playground
Description:
I'm sorry if that is a known bug ot expected behaviour. I did not find a duplicate.
Class C
is a result of extension of some other class A
provided as a function argument and class B
which is declared inside the function body. Such class C
works fine for the most part, but keyof InstanceType<typeof C>
returns string | number
.
While IntelliSense works fine:
I'll be glad if you suggest any workarounds for this issue.