Possible regression of intersection type inference in 5.7.2 compared to 5.6.3Β #60864
Open
Description
π Search Terms
inference generic types
π Version & Regression Information
- This changed between versions 5.6.3 and 5.7.2
- This changed in commit or PR Fixed an issue with contextual type for intersection properties (take 2)Β #52095
β― Playground Link
π» Code
class Variable<U, S extends string> {
constructor(public s: S) { }
u!: U;
}
function mkGeneric<U, S extends string>(s: S) {
return new Variable<U, S>(s)
}
type ExactArgNames<GenericType, Constraint> = GenericType & {
[K in keyof GenericType]: K extends keyof Constraint ? GenericType[K] : never
}
type AllowVariables<T> = Variable<T, any> | { [K in keyof T]: Variable<T[K], any> | T[K] }
type TestArgs = {
someArg: number
}
type TestArgsWithVars = AllowVariables<TestArgs>
function takesGeneric<V extends AllowVariables<TestArgs>>(a: ExactArgNames<V, TestArgs>): void {
}
let v = takesGeneric({someArg: mkGeneric("x")});
π Actual behavior
VVersion 5.7.2 of the compiler infers the variable type as Variable<uknown, "x"> and subsequently generates an error
π Expected behavior
VVersion 5.6.3 of the compiler infers the variable type correctly as Variable<number, "x">
Additional information about the issue
This is breaking most code that uses typed-graphql-builder typed-graphql-builder/typed-graphql-builder#85