refactor: improve inferred types for selector subscriptions #5096
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.
Explanation
This was a low hanging fruit to investigate the subscription selector/handler inference (for fun during Quality Quest).
Currently if you do not provide explicit type in the selector, then the handler function will have
unknown
params. This is because TS does not know which which function (handler or selector) to assign the generic typeSelectorReturnValue
.Here is a TypeScript Playground with a simplified example.
Playground Link
References
Changelog
@metamask/base-controller
SelectorEventHandler
to use a deferred version ofSelectorReturnValue
, so that TS will pick up and use the selectors return value as the Generic.Checklist