Skip to content
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

Add "loose auto complete" to string literals where applicable #966

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

janglad
Copy link

@janglad janglad commented Sep 28, 2024

What kind of change does this PR introduce?

Add "loose autocomplete" toWeakPasswordReasons, AMREntry.method, Factor.factor_type, SignInWithIdTokenCredentials.provider and AuthError.code

What is the current behavior?

The above types define possible string literal values, which is great, but they're unioned with string. As a regular "literal" | string just ends up as a string this foregoes the benefit of defining the literals in the first place.

What is the new behavior?

TypeScript still allows any possible string as a valid value (notice no error on the "not in there"), but now the predefined literals show up as hints. This is done by using "literal" | string & {}. While this seems hacky, it's something that works and something the TS team test against meaning they won't "fix" it in future releases.

image

Currently these hints aren't shown as the type just ends up as a simple string.

Additional context

I believe this can be quite helpful for people when trying to handle errors etc. I know string & {} might look somewhat weird for maintainers, if preferable I can create a LooseAutocomplete<T> or something and wrap them in there but this seemed cleaner.

@janglad janglad changed the title add "loose auto complete" where applicable Add "loose auto complete" to string literals where applicable Sep 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant