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