Fill some gaps in generating types for Typescript from the IDL #1393
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.
Closes #1392
We've run up against two small issues when working in Typescript with the types generated for account fields from the IDLs.
Option<T>
fields map tounknown
type in Typescript whenT
is one of the standard types defined inTypeMap
, e.g.,Results in
TS2365: Operator '+' cannot be applied to types 'unknown' and '1'.
Adding in an additional clause to
DecodeType<T extends IdlType, Defined>
allows the types declared inTypeMap
to be supported as type parameters ofOption<T>
, and for those types to map correctly into Typescript types.Vec<String>
fields map tounknown
type in Typescript. Only the types defined inTypeMap
are considered when determining how to map aVec<T>
to someT'[]
.Results in
TS2488: Type 'unknown' must have a '[Symbol.iterator]()' method that returns an iterator.
Adding in a mapping fromstring: string
inTypeMap
corrects this.Keen for input on whether we can get this fixed and if there are any additional changes we should make or code paths we should investigate; Or to understand if there are other changes to type support in Typescript coming that means we should leave this as it is for now.
Thanks!