Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

220
Visualizações
¿Cómo definir un tipo de mecanografiado para un diccionario con claves genéricas?

Al intentar mapear las claves de los datos, recibo varios errores de mecanografiado y no entiendo por qué. Recibo como respuesta de mi API un objeto con claves genéricas de la siguiente manera:

 { 1: { name: 'test1', country: 'test1', }, 2: { name: 'test2', country: 'test2', } ....generic amount of keys }

He definido el siguiente tipo de mecanografiado para esto:

 export type Users<T> = { [K in keyof T]: { name: string; country: string; }; };

Cuando intento mapear las claves de este objeto escrito en mi componente, recibo un error de mecanografiado:

 Object.keys(data).map((key) => { <p>{data[key].name}</p> })

Error en la línea Object.keys(data):

datos constantes: Usuarios | undefined Ninguna sobrecarga coincide con esta llamada.
Sobrecarga 1 de 2, '(o: {}): string[]', dio el siguiente error. Argumento de tipo 'Usuarios | undefined' no se puede asignar a un parámetro de tipo '{}'. El tipo 'indefinido' no se puede asignar al tipo '{}'. Sobrecarga 2 de 2, '(o: objeto): string[]', dio el siguiente error. Argumento de tipo 'Usuarios | undefined' no se puede asignar a un parámetro de tipo 'objeto'. El tipo 'indefinido' no se puede asignar al tipo 'objeto'.ts(2769) No hay arreglos rápidos disponibles

Error en datos[clave].nombre:

El objeto es posiblemente 'indefinido'.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

De la referencia noUncheckedIndexedAccess :

TypeScript tiene una forma de describir objetos que tienen claves desconocidas pero valores conocidos en un objeto, a través de firmas de índice.

Activar noUncheckedIndexedAccess agregará undefined a cualquier campo no declarado en el tipo.

Puede usar el operador de aserción no nulo (¡postfijo ! ) para informar al compilador que el valor definitivamente existe. Aquí hay un ejemplo:

Parque infantil TS

 import {default as React} from 'react'; type User = { name: string; country: string; } const data: Record<string, User> = { 1: { name: 'test1', country: 'test1', }, 2: { name: 'test2', country: 'test2', }, // ....generic amount of keys }; Object.keys(data).map(key => (<p>{data[key]!.name}</p>)); // ^ // The non-null assertion operator will assert // to the compiler that the value exists
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda