label: string;
value: T;
Render?: (props: { value: T; label: string }) => void
};
type FieldUnion<T> = T extends infer U ? GenericField<U> : never;
type DataItem = FieldUnion<string | number | string[] | number[]>;
const data: DataItem[] = [...]
Вообще да, или небезопасный каст или переписать (предпочтительно). Тайпскрипт не знает, что ты работаешь с тем же членом юниона, я написал покороче пример (то же самое, по сути): https://www.typescriptlang.org/play?#code/MYewdgzgLgBAJgQygmBeGBtAUDXMDeOexANggEYCmJAXDAORlUkCM9ANEcbgG4IkBXSnQwt2MAEwBdTtzwAnSmDiV5ACgAO8kBoh0oATw2UQAMxhQAFgEsIASgIwAvl2ey8hObibU6jCtQSHK7EfILCmPQIHAzk9DIhCkoq6lo6ehZGJuZWtg74zq5O7rieXj60DBUAzMFeMGFCftDyYXVeisqqmtq6+llmFjb2ji7ELlIwCBAwoJBQANxYWIjIAHQAtggaajqwqAB8BK4A9CcwAMIgGxtKsCACsFaUMNbm5CQgwADWU8owBgeMAA7tYSCQYBBKC9njBVNp5K43jBdhooGsKmhUOh-Mw2PlErhFFABPIwDA9mtOilUVA7EtxstiMjaRiAhDsTiKkECfViaTyZTqd09vSikykiSyRS0VTkiK0WKnPSYFggA
(ну а переписать можно используя this, например, и render без параметров, зачем самому себе себя передавать извне?)
Обсуждают сегодня