Hola, estoy tratando de usar useState y manejar un estado con genéricos. Dentro de setState, manipulé una matriz obtenida con la función de filtro y, como saben, devuelve falso.
así que... mostraré mis códigos.
const [mapItemsState, setMapItems] = useState<{ [k: string]: number | string }[]>([]); setMapItems( Object.entries(data)?.map( ([key, value]) => Object.keys(mapItemListKor).includes(key) && { [key]: value as string | number, }, ) .filter(Boolean) // I erased a false here! ) y este código devuelve este error Argument of type '(false | { [x: string]: string | number; })[]' is not assignable to parameter of type 'SetStateAction<{ [k: string]: string | number; }[]>'.
Eliminé false usando el filtro pero aún detecta false .
¿Cómo puedo manejarlo?
const [mapItemsState, setMapItems] = useState<{ [k: string]: number | string }[]>([]); setMapItems( Object.entries(data).filter(Boolean)?.map( ([key, value]) => Object.keys(mapItemListKor).includes(key) && { [key]: value as string | number, }, ) ) El problema que estaba teniendo es que no estaba filtrando la matriz antes de que se mapeara, lo que significa que los falsos aún se pasan al .map
De todos modos, resolví este problema de la siguiente manera.
setMapItems( Object.entries(data) .filter(([key]) => Object.keys(mapItemListKor).includes(key), ) .map(([key, value]) => { return { [key]: value as string | number }; }), );