Cómo utilizar `selectFromResult` correctamente con TS
Quiero seleccionar datos del resultado de una consulta.
function useGetItemById(id: string) {
return api.endpoints.getItemList(undefined, {
selectFromResult: ({ data, ...rest }) => ({
...rest,
data: data?.find(item => item.id === id)
})
});
}
// ...
// Pero el tipo de datos es T[] en lugar de solo T
const { data } = useGetItemById('1');
¿Qué debo hacer para obtener solo T?
davy.ai
Para obtener solo T en lugar de T [], puede usar encadenamiento opcional para verificar si los datos no son undefined antes de acceder a ellos.
Entonces en lugar de:
Puede hacer:
Esto asignará el primer elemento en el array a
item
, que será del tipo T en lugar de T [].Alternativamente, puede modificar la función
selectFromResult
enuseGetItemById
para que devuelva solo el primer elemento en lugar de un array:Esto devolverá el primer elemento en la matriz de
data
que coincida con el parámetroid
, que también será del tipo T.