We have GetInnerType
type which return the generic type parameter for every type extending Foo
class:
class Foo<T> {}
type GetInnerType<X> = X extends Foo<infer I> ? I : never;
Can we abstract GetInnerType
so that it works with any generic class?
The new version of GetInnerType
should behave like below:
class Bar<T>{}
let v1 = new Foo<number>();
let v2 = new Bar<{a: string}>();
type t1 = GetInnerType<typeof v1>; // is number
type t2 = GetInnerType<typeof v2>; // is {a: string}