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

487
Vistas
Los tipos de parámetros '__0' y 'valor' son incompatibles: mecanografiado

No soy un experto en mecanografiado y estoy atascado tratando de resolver el siguiente error:

El argumento de tipo '({keys, fire }: { keys?: any; fire: any; }) => void' no es asignable al parámetro de tipo '(value: unknown, value2: unknown, set: Set) => vacío'. Los tipos de parámetros '__0' y 'valor' son incompatibles. El tipo 'desconocido' no se puede asignar al tipo '{ ¿claves?: cualquiera; fuego: cualquiera; }'.

El bloque de código es:

 listeners.forEach(({ keys, fire }: {keys?: any; fire: any}) => { //some code });

Los oyentes es un conjunto como:

 const listeners = new Set();

y estoy empujando un objeto en él así:

 const create = (keys) => { //keys can be undefined const listener = { keys, fire: useState()[1], }; listeners.add(listener) }

Si elimino el fuego o las teclas del forEach, sigo recibiendo el mismo error y no puedo entender por qué sucede esto.

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

0

Los tipos de TypeScript para Set lo definen como Set<T> , una interfaz con un parámetro de tipo genérico correspondiente a los elementos del conjunto. Si invoca el constructor Set() sin proporcionar ninguna información de tipo, el compilador de TypeScript intentará inferir este parámetro de tipo.

Por ejemplo, si construye un Set y lo inicializa con una matriz, el compilador usará los elementos de la matriz para inferir el parámetro de tipo:

 const setOfStuff = new Set([{ a: 1, b: 2 }, { a: 3, b: 4 }]); /* const setOfStuff: Set<{ a: number; b: number; }> */

Pero si invoca al constructor sin argumentos, el compilador no tiene nada de lo que inferir el tipo de los elementos establecidos, por lo que recurre a un valor predeterminado de tipo unknown :

 const oops = new Set(); // const oops: Set<unknown>

El tipo unknown puede aceptar cualquier valor, por lo que es muy fácil proporcionar un valor de tipo unknown . Pero por otro lado, dado que un valor unknown puede ser absolutamente cualquier cosa, es muy difícil consumir dicho valor. El compilador se queja de que está tratando los elementos de su conjunto como si fueran del tipo { keys?: any; fire: any; } cuando todo lo que sabe es que son de tipo unknown .


Hay momentos en los que unknown es un tipo razonable para usar, pero en su caso, probablemente solo tenga la intención de que su conjunto contenga valores de tipo { keys?: any; fire: any; } y nada más. Si es así, puede especificar explícitamente el parámetro de tipo genérico al construir su conjunto y, por lo tanto, escribirlo fuertemente:

 const listeners = new Set<{ keys?: any; fire: any; }>(); /* const listeners: Set<{ keys?: any; fire: any; }> */

Después de esto, puede llamar al método forEach() y el compilador sabrá que cada elemento es del tipo { keys?: any; fire: any; } , como se desee:

 listeners.forEach(({ keys, fire }) => { //some code }); // no error

Enlace del patio de recreo al código

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