New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Convert useMachine
to TypeScript
#300
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
LevelbossMike
force-pushed
the
MIKE/typescript
branch
3 times, most recently
from
September 4, 2020 10:01
528f712
to
3043d61
Compare
LevelbossMike
changed the title
TypeScript support for useMachine
Convert Sep 4, 2020
useMachine
to TypeScript
Nice! |
pangratz
approved these changes
Sep 6, 2020
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BEAUTIFUL
Thanks for your hard work on this! |
LevelbossMike
force-pushed
the
MIKE/typescript
branch
from
September 6, 2020 16:46
3043d61
to
2205137
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 refactors the
useMachine
-api to TypeScript and introduces theinterpreterFor
-typecasting function that allows TypeScript to do meaningful typechecking onuseMachine
.The idea for
interpreterFor
is inspired by howember-concurrency
is dealing with enabilng TypeScript support for their apis - see https://jamescdavis.com/using-ember-concurrency-with-typescript/ and https://github.com/chancancode/ember-concurrency-ts for details about why this is necessary and whatember-concurrency
is doing to allow proper typechecking.In short
interpreterFor
doesn't change the code but typecasts theuseMachine
-usable so that TypeScript understands that we are not dealing with theConfigurableMachineDefinition
anymore but anInterpreterUsable
that you can send events to.This PR also adds a section to the docs that discusses how to use TypeScript with
ember-statecharts
.Here's a code example of how usage of
ember-statecharts
will look like with TypeScript - I added the respective machine definition behind a collapsable code block for readability./app/machines/typed-button.ts - (Machine-Definition)