typescript - El tipo 'undefined' no se puede asignar al tipo '(number | null)[]'
Tengo a TS quejándose de este código:
const data = values?.map((item: PointDTO) => item.y);
const chartData: ChartData = {
labels,
datasets: [{ data }],
};
El mensaje de error es:
Type '(number | undefined)[] | undefined' is not assignable to type '(number | ScatterDataPoint | BubbleDataPoint | null)[]'.
Type 'undefined' is not assignable to type '(number | null)[]'
Así que cambié mi código a:
const data = values?.map((item: PointDTO) => item.y) ?? null;
Pero esto no resolvió mi problema.
¿Cómo puedo resolver esto, por favor?
Respuesta #1
Suponiendo que la siguiente línea sea la que está mostrando el error: datasets: [{ data }], necesitarás cambiar la primera línea de tu ejemplo a la siguiente:
const data = values?.map((item: PointDTO) => item.y).filter((y) => y !== undefined) ?? [];
Explicación de los cambios:
- Si la variable
valuesse estableció en null,dataoriginalmente se habría asignado conundefinedpor el operador opcional. Esto se soluciona agregando?? []al final, lo que hará que el resultado por defecto sea un arreglo vacío en su lugar. - Si alguna de las propiedades
item.yeraundefined,dataoriginalmente se habría asignado con un arreglo que contiene valores undefined como sigue[undefined, undefined, 1234, undefined]. Esto se corrige con.filter((y) => y !== undefined), que elimina cualquiera de las entradas undefined del arreglo y cambiaría el resultado anterior a esto[1234].
Respuesta #2
Podrías tener que especificar que la variable es indefinible:
let dataPoint: DataPoint | undefined;
