Invalid Type for Union Merge Error#
Description#
This error is thrown when trying to extend an union with a type that’s not allowed in unions, for example the following code will throw this error:
import strawberry
@strawberry.type
class Example:
name: str
ExampleUnion = strawberry.union("ExampleUnion", types=(Example,))
@strawberry.type
class Query:
field: ExampleUnion | int
schema = strawberry.Schema(query=Query)
This happens because GraphQL doesn’t support scalars as union members.
How to fix this error#
At the moment Strawberry doesn’t have a proper way to merge unions and types,
but you can still create a union type that combines multiple types manually.
Since GraphQL doesn’t allow scalars as union members, a workaround is to create
a wrapper type that contains the scalar value and use that instead. For example
the following code will create a union type between Example
and IntWrapper
which is a wrapper on top of the int
scalar:
import strawberry
@strawberry.type
class Example:
name: str
@strawberry.type
class IntWrapper:
value: int
ExampleUnion = strawberry.union("ExampleUnion", types=(Example, IntWrapper))
@strawberry.type
class Query:
field: ExampleUnion
schema = strawberry.Schema(query=Query)