Or maybe your question is React-specific.
In JSX v4, you can use record types for sharing.
But still, labeled arguments can provide better ergonomics. It allows for co-locating type definitions and inference without having to duplicate declarations.
This is a feature that TypeScript people are really envious of, and is also a proposal for the Component DSL that Flow recently added.
- New Flow Language Features for React | by Alex Taylor | Flow | Medium
- Add Support for Flow's new component syntax · Issue #58246 · microsoft/TypeScript · GitHub
We’re already ahead of the curve 