IsStringLiteral
: Fix instantiations with infinite string types
#1044
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #1032
Found a really nice trick to solve this! Refer to the code comments explaining how it works:
type-fest/source/is-literal.d.ts
Lines 116 to 122 in 06037a9
This fix will make this type quite useful because almost all string utilities will require an
IsStringLiteral
check. For example:I'll open up a separate PR fixing all the above mentioned cases.
I've mentioned the same as an example in the documentation:
type-fest/source/is-literal.d.ts
Lines 97 to 110 in 06037a9
NOTE: If
IsStringLiteral
is instantiated with a union of literal strings and non-string types, it currently returnsfalse
because not all union members are literal strings. However, after this PR, cases like these would instead returnboolean
.To me, the current behaviour seems more like a bug than an intentional choice, as returning
boolean
makes more sense and allows users to decide how to handle mixed union cases.