Change MojoModels from type to interface #166
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.
Description
This PR updates the MojoModels definition from a type to an interface to enable declaration merging. This change allows developers to extend MojoModels in their applications, similar to how MojoContext can be extended.
Declaration merging is a key TypeScript feature that enhances extensibility, making it easier for developers to define and use typed models within their apps.
Changes Made
src/types.ts
file:Replaced
with:
Added a declaration merging example in the existing test file
./test/support/ts/full-app/src/index.ts
. Here's how the declare module portion looks:This demonstrates how developers can extend MojoModels and assign strongly typed properties like bar. It effectively verifies that the updated MojoModels supports declaration merging, as reverting to a type causes the test file to fail during the build process.
Benefits
Enables developers to extend MojoModels via declaration merging, improving type safety and flexibility.
Provides an example in the test file to illustrate usage, making it easier for others to adopt this pattern.
Considerations