Open OliverJAsh opened 5 years ago
Maybe a better approach would be to leave the runtime semantics alone but to ensure that the type of the refined variant includes the tag
property (but only when it will have one, i.e. when there is no value
prop.)
Yeah that could work! Although it won't help much in my specific use case with React, since TS allows excess properties 😢 https://github.com/microsoft/TypeScript/issues/29883
Workaround: if we specify a
value
, we don't have this issue:Why this matters: we are spreading the unionize variant value into a React component:
We expect the spreaded object to contain valid props for this React component, which it does, however it also passes the tag prop which is not valid. This results in invalid HTML.
IMO the runtime value should match the type. There should not be an excess property containing the tag—although I realise this would mean creating a new object, in order to remove the tag