-
Notifications
You must be signed in to change notification settings - Fork 444
Add __brand
to make empty interfaces nominal
#2075
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
base: main
Are you sure you want to change the base?
Conversation
Because who have thought that there are so many existing interfaces which are also used as parameter types.
Thanks for the PR! This section of the codebase is owned by @saschanaz - if they write a comment saying "LGTM" then it will be merged. |
https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1246/files#r881972594 suggested emitting a class with a private member. While I'm all for emitting classes (yes please) but a private member would only raise the possibility to clash with other libraries. Introducing a public member would allow other libraries to match the brand. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mostly looks good.
These will end up being in completions and so on (I see people do like I don't know that we actually use type branding in any of the existing lib.d.ts files, so this would be a new thing I think. |
This is only for empty interfaces so I think that part is less a problem, although putting a space is an interesting solution.
https://www.typescriptlang.org/play/?#example/nominal-typing As you saw in #2074 the most popular one (I don't think there's any other comparable library?) uses |
One thing I think we're going to have to try is to port this code into the main TS repo and run the extended suite. |
Because who have thought that there are so many existing empty interfaces which are also used as parameter types. And thus this follows the pattern in https://www.typescriptlang.org/play/?#example/nominal-typing.
Preparing for #2074.