Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

130
Vistas
Filtrado de claves de objeto con mecanografiado

Aquí hay una caja de arena que muestra el problema.https://codesandbox.io/s/trusting-moon-n058k?file=/src/index.ts

Entrada :

 data.types = { starter: true, main: false, side: false, dessert: true, drink: false }

Salida deseada :

 recipe.types = ["starter", "dessert"]

Solución :

 type NewRecipeFormValues = { types: { starter: boolean, main: boolean, side: boolean, dessert: boolean, drink: boolean } } const postNewRecipe = (data: NewRecipeFormValues) => { let recipe = JSON.parse(JSON.stringify(data)); recipe.types = Object.keys(data.types).filter( (key: keyof NewRecipeFormValues["types"]) => data.types[key] ); };

Problema : el mecanografiado nunca se cierra sin importar el tipo que use.

Cualquier ayuda sería apreciada porque estoy perdiendo la cabeza.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El error ocurre porque el compilador no puede inferir el tipo de tiempo de ejecución de la key porque Object.keys puede devolver una lista arbitraria de cadenas que no son necesariamente keyof NewRecipeFormValues["types"] .

Por lo tanto, debe decirle explícitamente al compilador que la key es de hecho la keyof NewRecipeFormValues["types"] para que pueda calmarse.

Para ello, utilice el tipo de aserción .

 type NewRecipeFormValues = { types: { starter: boolean; main: boolean; side: boolean; dessert: boolean; drink: boolean; }; }; const postNewRecipe = (data: NewRecipeFormValues) => { let recipe = JSON.parse(JSON.stringify(data)); recipe.types = Object.keys(data.types).filter( (key) => data.types[key as keyof NewRecipeFormValues["types"]] ); };

Mira este parque infantil .

En cuanto a por qué no puede usar key: keyof NewRecipeFormValues["types"] , la documentación vinculada lo explica mejor.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda