TanStackT
TanStack3mo ago
9 replies
then-purple

tanstack form type errors with a zod discriminated union

For context, here is my schema expressed in ts types for clarity
{
    engine_type: "Petrol" | "Petrol-LPG" | "Diesel" | "Mild Hybrid" | "Hybrid" | "Plug-in Hybrid";
    manufacturer: string;
    model: string;
    variant: string;
    price: number;
    co2_min?: number | null | undefined;
    co2_max?: number | null | undefined;
    engine_displacement?: number | null | undefined;
    fuel_economy_min?: number | null | undefined;
    fuel_economy_max?: number | null | undefined;
    hp?: number | null | undefined;
    url?: string | null | undefined;
} | {
    engine_type: "Electric";
    manufacturer: string;
    model: string;
    variant: string;
    price: number;
    battery_capacity?: number | null | undefined;
    energy_consumption?: number | ... 1 more ... | undefined;
    battery_range?: number | ... 1 more ... | undefined;
    hp?: number | ... 1 more ... | undefined;
    url?: string | ... 1 more ... | undefined;
}
In my form the default value of engine_type is 'Petrol", so the 1st variant is used for type checking. I am using the form.Subscribe HOC to show only the relavant fields based on the engine_type. The type error manifests in the electric car only fields. Any idea how to get rid of the type error without casting?
Was this page helpful?