We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"inference", "conditional type", "substitution type", "mapped type", "type constraint", "array", "union type"
This changed between versions 5.0.4 and 5.1.6
https://www.typescriptlang.org/play?ts=5.1.6#code/C4TwDgpgBAShB2BDAthAJlAvFAThRaA9vADYhQAUA3lANoDWAXFAAo6GQ6gDSEIAuswDOwHAEt4AcygBfKAB8oAV3hoIAMwnoAlLX4AofaEhQAYoUIAeACpQIAD2AI0Q3PiKlyFNhwhcQvOSKKmqa8Dp6CrAIKOgAfFj6UMlQtg5Oqq5wSKgYAPxQAOIQwIFClnAAjkpieGg2cQnMVTV1DYbG0MWlfOUwdo7OWTG5Cdg0tNxQElD0fITqsIKz84swk-yyhgD028pCiJIQRuDQAIJYZhaWtADkiLd5-Am7dABEiG8GnVAAQpfmKy0GiIPLMW4AI1usmeUFetA+XyAA
type Renamed = readonly ({ [k: PropertyKey]: string } | undefined)[] type Foo<T extends readonly (PropertyKey | undefined)[] | Renamed> = T extends Renamed ? GetKeys<Required<T>> : Required<T> // ~~~~~~~~~~ // Type 'Required<T>' does not satisfy the constraint 'Renamed' type GetKeys<R extends Renamed> = { [K in keyof R]: keyof R[K] } // usage type A = Foo<['a'?]> // ["a"] type B = Foo<[{ a?: 'b' }]> // ["a"]
TS fails to see that Required<T extends Renamed> extends Renamed.
Required<T extends Renamed>
Renamed
It should compile.
Substitute readonly (PropertyKey | undefined)[] with something that is not an array and the problem disappears.
readonly (PropertyKey | undefined)[]
I get the same error when I do GetKeys<Id<T>> with type Id<T> = { [K in keyof T]: T[K] }.
GetKeys<Id<T>>
type Id<T> = { [K in keyof T]: T[K] }
Extract<Required<T>, Required<Renamed>> silences the error, but Extract<Required<T>, Renamed> does not.
Extract<Required<T>, Required<Renamed>>
Extract<Required<T>, Renamed>
The text was updated successfully, but these errors were encountered:
I bisected it to this diff and to this PR. To be more precise - the adjustment from this PR to getResolvedApparentTypeOfMappedType broke this.
getResolvedApparentTypeOfMappedType
Sorry, something went wrong.
Successfully merging a pull request may close this issue.
π Search Terms
"inference", "conditional type", "substitution type", "mapped type", "type constraint", "array", "union type"
π Version & Regression Information
This changed between versions 5.0.4 and 5.1.6
β― Playground Link
https://www.typescriptlang.org/play?ts=5.1.6#code/C4TwDgpgBAShB2BDAthAJlAvFAThRaA9vADYhQAUA3lANoDWAXFAAo6GQ6gDSEIAuswDOwHAEt4AcygBfKAB8oAV3hoIAMwnoAlLX4AofaEhQAYoUIAeACpQIAD2AI0Q3PiKlyFNhwhcQvOSKKmqa8Dp6CrAIKOgAfFj6UMlQtg5Oqq5wSKgYAPxQAOIQwIFClnAAjkpieGg2cQnMVTV1DYbG0MWlfOUwdo7OWTG5Cdg0tNxQElD0fITqsIKz84swk-yyhgD028pCiJIQRuDQAIJYZhaWtADkiLd5-Am7dABEiG8GnVAAQpfmKy0GiIPLMW4AI1usmeUFetA+XyAA
π» Code
π Actual behavior
TS fails to see that
Required<T extends Renamed>
extendsRenamed
.π Expected behavior
It should compile.
Additional information about the issue
Substitute
readonly (PropertyKey | undefined)[]
with something that is not an array and the problem disappears.I get the same error when I do
GetKeys<Id<T>>
withtype Id<T> = { [K in keyof T]: T[K] }
.Extract<Required<T>, Required<Renamed>>
silences the error, butExtract<Required<T>, Renamed>
does not.The text was updated successfully, but these errors were encountered: