type A = { new (): string; } type B = { new (a: string, b: number) } type C = { new (a: A, b: B): string }