// @strict: true // Repros from #33872 export interface CalcObj { read: (origin: O) => CalcValue; } export type CalcValue = CalcObj; function foo() { const unk: CalcObj = { read: (origin: unknown) => unk } const x: CalcObj = unk; } type A = B; interface B { prop: A; } declare let a: A; declare let b: A<3>; b = a;