Vyhledávání na webu

typescript - type-graphql. Union typ String, Boolean a Number selhal


Snažím se vytvořit typ unie v type-graphql, který by reprezentoval třídy String, Number a Boolean, ale selhalo to. Máte nějaký nápad, jak to udělat?

export const NonObjectType = createUnionType({
    name: "NonObjectType",
    types: () => [String, Boolean, Number] as const,
    resolveType: (value) => {
        console.log(value, typeof value);
        switch (typeof value) {
            case "string":
                return String;
            case "number":
                return Number;
            case "boolean":
                return Boolean;
            default:
                return undefined;
        }
    },
});

@ArgsType()
@InputType("FindSomeArgsUnitInputType")
export class GqlArgsFindSomeArgsUnit<T extends object>
    implements IFindSomeArgsUnit<T> {
    @Field(() => String, { defaultValue: "id" })
    column: keyof T;

    @Field(() => [NonObjectType], { defaultValue: [""] })
    values: Array<string | boolean | number>;
}

Chyba: Chyba: Nelze určit vstupní typ GraphQL pro 'values' třídy 'GqlArgsFindSomeArgsUnit'

Odpověď č. 1

Bohužel, specifikace GraphQL nepodporuje unii na skalárních typech, pouze na typech objektů:

https://github.com/graphql/graphql-spec/issues/215

Související články