Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

477
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!