TypeScript problem: A subset of fields are optional, but should all be...


TypeScript problem: A subset of fields are optional, but should all be populated if one is populated.

Solution:
1. Put related properties under an optional field
2. Require all fields on the nested object

Now TS assure all fields are provided, or none.

Example:

Another solution: Create a union.

View original on X