You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The issue comes from AddPrefixToKeys interface, shown below, in use cases where nested interfaces are defined as Record<string, Model> or {[key: string]: Model} - it looks like Typescript has a challenge inferring such shape as it considers K to be of type string|number|symbol.
To solve this, we have to tell Typescript to infer the type or use a conditional statement to determine the type as shown below. Now, typescript can infer K and know its shape n-levels deep.
This Typescript playground shows what's happening - all interface definitions come from the current version of firebase-js-sdk (firebase v9.7.0). I've commented the current logic for the fix. Switch between the 2 to see how the fix solves the issue
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
@nwaughachukwuma, apologies for the long delay on this. I've been looking at this recently and I'd like to accept the change, but I'm having trouble getting this solution to work. In the Typescript playground sample you linked, you can see the error when assigning to q on line 29. Still looking for a fix.
Hi @MarkDuckworth, it's been a while but let me take another look at it.
This file contains hidden or 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
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.
Summary
Fixes #6105
The issue comes from
AddPrefixToKeysinterface, shown below, in use cases where nested interfaces are defined asRecord<string, Model>or{[key: string]: Model}- it looks like Typescript has a challenge inferring such shape as it considersKto be of typestring|number|symbol.To solve this, we have to tell Typescript to infer the type or use a conditional statement to determine the type as shown below. Now, typescript can infer K and know its shape n-levels deep.
This Typescript playground shows what's happening - all interface definitions come from the current version of firebase-js-sdk (firebase v9.7.0). I've commented the current logic for the fix. Switch between the 2 to see how the fix solves the issue
cc @ehsannas