-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC: branded types for aliases and external types (for strings or more) #23
Comments
@iamdanfox Has this proposal been considered? |
👍 think it looks sensible. Sadly we can't really do opt-in feature flags in this repo because this would allow API producers to ship compilation breaks in a minor release of their API. The internal publish plugin uses the '301 versioning scheme' to mitigate this, so I think we'd just need to get this right first time and release a 4xx. |
Agree that this would be very cool, although slight preference to not provide the |
+1 on this issue. We've seen serious bugs that this would have prevented. |
Currently, even if a named type in Conjure is distinguishable from a string, a typescript declaration will just have
string
in place of the type. That can easily lead to problems where type A is used instead of type B (which wouldn't happen eg. with conjure generated java).I propose to generate stronger typed interfaces for named strings (aliases, rids, external objects with base-type string). The behavior might require to "opt-in" so that it won't cause a breaking change.
Example - Alias
could produce:
Example - Import
could produce:
With such declarations, we can get much stronger typings:
Moreover, I can imagine such extension for any primitive type, not only string.
I'd be happy to contribute if you think it makes sense.
The text was updated successfully, but these errors were encountered: