Better type declaration for inputAttributes #467
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.
This is a PR to improve the type definition of the
inputAttributes
option, added recenlty by @Fkscorpion in #466.First, in the aca4dc3 commit, I used a mapped type - to allow IDEs to provide auto-completion - in intersection with a standard dictionary, to allow custom attributes and not only
HTMLInputElement
's ones.Then, I've decided to remove the mapped type and only keep the dictionary, since this is a bleeding-edge, TypeScript 2.1 feature, so it would break alot of consumers' applications without a single benefit from a static typing point of view (only IDE assistance, but even my IDE is not yet capable of understanding a type intersection with a mapped type, so...).
You'll note that the dictionary maps to
string
and notany
, becausesetAttribute()
(used under the hood in SweetAlert) takes a string, and not any value (the DOM API, however, takes typed values, butsetAttribute()
is an HTML thing).Maybe I will make a new PR about adding a
inputProperties
option that setsHTMLInputElement
DOM properties, and not HTML attributes. The DOM API is better to work with than the XML/HTML one, fits most use cases and offers a much better typed experience.API proposal: