feat(signals): define SignalStore members as readonly #4713
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.
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
What is the current behavior?
#4712
What is the new behavior?
After these changes, the store and entities will become type-safe:
Does this PR introduce a breaking change?
If someone modifies the store or directly edits entities, they will need to fix these errors (or add just
as any
). However, this will help prevent future errors by enforcing type safety.Also, I want to mention that it doesn't introduces "breaking changes" in logic, like it was with
Object.freeze
that was reverted #4683.Other information
In my application, almost every type includes readonly to ensure type safety. I always know when this rule is broken—only when using the
as
keyword. It would be great to have similar safety in @ngrx/signals.This PR provides the minimum type safety I want. Additionally, I suggest changing every instance like this:
To:
I can also implement this change if the idea is accepted.