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)