Búsqueda de sitios web

javascript - Typescript: El argumento de tipo 'string | undefined' no es asignable al parámetro de tipo 'string'


Tengo una lista de listas anidadas, estoy tratando de filtrar basado en el valor del arreglo. Cuando filtro, obtengo un error. Estoy usando TypeScript con ESLint.

Argument of type 'string | undefined' is not assignable to parameter of type 'string'

Pero revisé el valor nulo/indefinido y aún así sigo obteniendo error.

interface User {
  id: string;
  username?: string;
}

function getList (user:User){
  if(user.username === undefined){
    return {};
  }
  let arrayData: string[][] = [];
  arrayData = [["abcd"],["efgh"],["xyz"],["abcd","xyz"]];
 //here i have differnt logic
  const filterData = arrayData.filter(list => list.includes(user.username));
  return filterData;
}

getList({id: "123", username: "xyz"});

Cuando uso el operador de afirmación de no nulo, el error se resuelve pero aparece un problema de lint.

const filterData = arrayData.filter(list => list.includes(user.username!));

¿Alguien puede ayudarme a solucionar este problema, por favor?

Respuesta #1

estás comparando el Usuario .username, que es Opcional, lo que significa que es de tipo string | undefined con cada elemento string en un array,

puedes cambiar el tipo de tu array a: arrayData: Array<Array<string|undefined>> o simplemente puedes usar as para tratarlo como un string, no como string|undefined: es decir: list.includes(user.username as string)

Respuesta #2

Puedes declarar el nombre de usuario así:

username?: string | undefined;

Artículos relacionados