Split
: Fix instantiations with unions and add strictLiteralChecks
option
#1067
+83
−6
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.
This PR introduces a new
strictLiteralChecks
option for theSplit
type based on the discussions made in #1047.This option currently defaults to
false
for backward compatibility but in the next major release it'd be better to update the default totrue
.Why is defaulting to
true
better?When non-literal strings are involved, the result produced by
Split
will most-likely be inaccurate. Consider this example:So, when
strictLiteralChecks
is disabled, splittinga.b.${string}
by'.'
returns['a', string, 'z']
, which is not accurate because thea.b.${string}
type might hold a value likea.b.c.d
, which, when split by,
, would result in['a', 'b', 'c', 'd']
, which wouldn't conform to the output type of['a', 'b', string]
.So, by default, it's better to prioritise accuracy over precision and simply return
string[]
in cases involving non-string literals.This PR also fixes cases where
Delimiter
is a union:Closes #1047