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

493
Visualizações
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 Respostas
Responde à pergunta

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 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