π Search Terms
generic, class, infer
π Version & Regression Information
β― Playground Link
https://www.typescriptlang.org/play?ts=5.5.0-dev.20240411#code/KYDwDg9gTgLgBDAnmYcCCBnDBLA5gOwB4AVAGjgFUA+OAXjgHkBbbGE8ga2EQgDNKaAMkoBuAFBiAxgBsAhljgAxCBBI0A3mLja4kiPgwwoAV0kxoACjDGARtOySEALjjEAlHHUBfCTvRY8fAtjF3UQFwBGLzcXZVVMHAJ2T3C4KKoNLT8dPQN4ADcXBMDksMivGnoGGwArYDMAOnlEoO9yGAALbAwGmHJjN3FsnShgGGMofDh8YAB3JRULfMGs4YB6NbgAPQB+VeyN12RUAHI4wmKky6IyTzhUiJE4CvJ1e8iniqoTuG7piHgzUCsjsqHMCGOcDOKguASStzeD0+GRODX2fkOs1kMH2Ph8QA
π» Code
export type Assign<T, U> = Omit<T, keyof U> & U;
class Foo<T> {
constructor(public t: T) {}
assign(u: {x: 1}): Foo<Assign<T, {x: 1}>> {
const v: Assign<T, {x: 1}> = Object.assign({}, this.t, u);
return new Foo(v);
// ^?
// Type 'Foo<Assign<Assign<T, { x: 1; }>, { x: 1; }>>' is not assignable to type 'Foo<Assign<T, { x: 1; }>>'.
// wat
}
}
π Actual behavior
Type error
π Expected behavior
No type error
Additional information about the issue
No response