fix(@toss/react): literal type inference #292
Merged
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.
Overview
#220
I wrote a PR by modifying the type for
defaultValue
so thatgeneric
is not forced.TypeScript will infer "a concrete type" if there is a
generic type constraint
for aprimitive type
.Type constraint
is applied touseStorageState
so that only values that can be serialized asJSON
can be received asdefaultValue
.However, if
defaultValue
was set as aprimitive type
, thestate
was inferred to be aliteral type
, andgeneric
had to be created in the following situations.How To Fix
The
Serializable
type was inferred by dividing it into aprimitive type
and anobject type
.Primitive types
must be inferred asprimitive types
, notliteral types
(SeeToPrimitive<T>
), andobject types
are shallowly inferred, so it's okay to inferT
whentrue
for a conditional type (SeeToObject<T>
).p.s. Tried to solve this PR #223 as well, but
state
was still inferred as aliteral type
.AS-IS
TO-BE
PR Checklist