feat: add option to add `__typename` to interfaces
The new option addTypenameToInterfaces adds the __typename field to types resulting from interfaces. The field admits a union of string values, each the name of one of the concrete types implementing the interface.
Also adds field typeUnionOperator to class BaseVisitor so we don't have the literal ' | ' in a bunch of places.
🚨 IMPORTANT: Please do not create a Pull Request without creating an issue first.
Any change needs to be discussed before proceeding. Failure to do so may result in the rejection of the pull request.
Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
This will allow us to treat incoming objects uniformly using their parent type, and will also allow us to type cast appropriately when the handling of the individual object begins to diverge based on their type.
Related #10522
Type of change
Please delete options that are not relevant.
- [x] New feature (non-breaking change which adds functionality)
- [x] This change requires a documentation update
Screenshots/Sandbox (if appropriate/relevant):
Adding links to sandbox or providing screenshots can help us understand more about this PR and take action on it as appropriate
How Has This Been Tested?
A unit test is included. The remaining unit tests verify that no change occurs when the option is absent.
Test Environment:
- OS: OSX
- NodeJS: 20
Checklist:
- [x] I have followed the CONTRIBUTING doc and the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my feature works
- [x] New and existing unit tests pass locally with my changes
⚠️ No Changeset found
Latest commit: 28f21a8a4d8114a89ad4b979fbe9453325265786
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
Click here to learn what changesets are, and how to add one.
Click here if you're a maintainer who wants to add a changeset to this PR