I have a generic class Generic<T> and another generic class having another generic class as a generic type which is GenericWrap<U extends Generic<any>. It has a Generic<any> as a member. (Please see the code below)
Now NumberGenericWrap extends GenericWrap with a generic type <NumberGeneric>. At this point, I want the type of NumerGenericWrap.generic to be Generic<number> so the return type of NumberGenericWrap.getValue() can be number. But it ends up with any type.
Does typescript support this?
class Generic<T> {
val: T;
}
class NumberGeneric extends Generic<number> {
}
class GenericWrap<U extends Generic<any>> {
generic: U;
getValue() {
return this.generic.val;
}
}
class NumberGenericWrap extends GenericWrap<NumberGeneric> {
}
let n = new NumberGenericWrap();
// expected 'typeof val' => number
// actual 'typeof val' => any
let val = n.getValue();
T, soGenericWrapcontainsgeneric: Generic<T>andclass NumberGenericWrap extends GenericWrap<number>?numberis a first-level data,NumberGenericis a second-level and finallyGenericWrapis the third level which is the highest level. So having second-level data as a generic type for third-level data makes sense rather than first-level one.