I Have A Type with two generic parameters
type FirstLevelType<A, Z> = {
_: "typeCheck";
};
But I Need Wrap this type with another
type TestWrapperType<T, U> = FirstLevelType<T, U>;
After I have create variable with TestWrapperType, I need to get generic parameters.
const a: TestWrapperType<{ cat: string }, { dog: number }> = {
_: "typeCheck",
};
But I can use only FirstLevelType to prevent growing code length, because wrapper types can be created many times.
type ExtendFirst = typeof a extends FirstLevelType<infer T, infer U>
? T
: "not extended";
Resulted type = unknown
Excepted type = {cat: string}
type ExtendWrapper = typeof a extends TestWrapperType<infer T, infer U>
? T
: "not extended";
Resulted type = {cat: string}
Excepted type = {cat: string}
Why ExtendFirst type is unknown? And how can I solve this issue.
[Update 1]
If FirstLevelType declared as interface, when Resulted Type will be correct. However, when my wrapper has other properties, resulted type unknow again.
type TestWrapperType<T, U> = FirstLevelType<T, U> & {
seal?: boolean;
};