Этого можно достичь, добавив параметр generi c.
const main = <T extends foo>(o: T) => (p: T) => o.first + o.last
main(o)(p); // allowed
main(o)(q); // Property 'age' is missing in type '{ first: string; last: string; gender: string; }'
Playground
Это работает, поскольку тип generi c выводится из первого аргумента. (o
) и разрешается в
{ first: string, last: string, age: number }
Теперь тип второго параметра (p
) должен быть назначен вышеуказанному.