| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
…like a built in Symbol
…IsProperSymbolReference
… esSymbols Conflicts: src/compiler/diagnosticInformationMap.generated.ts
There was a problem hiding this comment.
Space before Otherwise
Sorry, something went wrong.
… esSymbols Conflicts: src/services/services.ts
… esSymbols Conflicts: src/compiler/diagnosticInformationMap.generated.ts src/compiler/diagnosticMessages.json
There was a problem hiding this comment.
someTypeHasKind
Sorry, something went wrong.
|
👍 |
Sorry, something went wrong.
Support ES6 built-in symbols
|
👍 |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
This change adds type checking support for properties whose names are the built-in ES symbols. It allows you to create objects like:
And you get the right type when you index:
I've also added a new keyword for the symbol primitive type, as well as type guard support, errors for all the operators ,etc. To see the full design discussion, see #980.
This pull request fixes #1750, and #1863. However, strong type information is only available for the built-in ES6 symbols (properties of the global Symbol object).
This does not cover symbol indexers, which allows an object to act as a map with arbitrary symbol keys.
I also did my best to allow symbol polyfilling to work on the type side, provided that the provider of the polyfill also provide the typings for the global Symbol object.
I recommend going through the pull request commit-by-commit, although some commits were experiments that were largely reverted later on. This is mainly true for the following two commits, so feel free to skip them if you like: