Учитывая этот пример кода:
type keys = {
a: number
b: string
}
class Model<T extends number, U extends string> { }
class ExtendedModel<T extends keys & {
c: boolean
}> extends Model<T['a'], T['b']> {
// private Keys: T // <---- try to uncomment this line
}
type ExtractExtendedModelT<ExtendedExtendedModel> = ExtendedExtendedModel extends ExtendedModel<infer U> ? U : never
class Test extends ExtendedModel<{
a: 1
b: '2'
c: false
}> { }
type TestGenericType = ExtractExtendedModelT<Test> // <---- and see the type difference
Почему я не могу получить введенный универсальный тип класса Test, который должен быть { a: 1, b: '2', c: false }
ТОЛЬКО ЕСЛИ я опускаю приватныйпеременная на ExtendedModel?Хотя, если я зарегистрирую переменную, я могу правильно извлечь тип?
Проблема в том, что я не хочу добавлять какие-либо неиспользуемые переменные в свой класс.Может кто-нибудь помочь мне понять, почему это происходит, и помочь мне обойти это?
Ссылка на игровую площадку TS