Soy completamente nuevo en TypeScript, y estoy perplejo por este mensaje de error: Property 'name' does not exist on type 'Employee[]' ¿Podría alguien señalar dónde no estoy aplicando el tipo de "nombre" dentro del Employee ? ¿formación? Gracias.
interface Employee { id: number; name: string; title: string; } var employees: Employee[] = [ { id: 0, name: "Franklin", title: "Software Enginner" }, { id: 1, name: "Jamie", title: "Human Resources" }, { id: 2, name: "Henry", title: "Application Designer" }, { id: 3, name: "Lauren" title: "Software Enginner" }, { id: 4, name: "Daniel" title: "Software Enginner 2" }, ]; function fetchEmployeeName(id : number) { var employee = employees.filter( (employee) => employee.id === id ); // The error occurs when I try to return a "name" under an employee that matched by id. return employee.name; } console.log("Got Employee: "), fetchEmployeeName(3));filter devuelve una nueva matriz que contiene todos los elementos coincidentes:
[1, 2, 3].filter(i => i === 4)Lo anterior devolverá una matriz vacía.
Lo que desea usar es find , que devolverá un solo elemento coincidente o undefined .
Modifique la función fetchEmployeeName para usar find :
function fetchEmployeeName(id : number): string | null { var employee = employees.find( (employee) => employee.id === id ); if (employee === undefined) return null; return employee.name; }Intente usar buscar en lugar de filtrar. El filtro devuelve una matriz. Find devuelve un único objeto. La próxima vez, si usa vscode, coloque el cursor sobre el empleado en la primera línea de fetchEmployeeName y verifique su tipo. Intellisense en vscode le indicará que el empleado es claramente una matriz.
Le recomiendo enfáticamente que use find en lugar de filter , pero si realmente quiere ceñirse a su enfoque, tendrá que acceder al único miembro de la matriz de empleados a través de su índice (el filter devuelve una matriz completa con los elementos que cumplen con los requisitos especificados). condición). P.EJ:
return employee[0].name Nuevamente, puede resolver este problema en particular usando filter , ya que devuelve un solo elemento al que accede sin la necesidad de un índice (esto le permitirá dejar la declaración de devolución tal como está).