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

356
Visualizações
Un tipo de parámetro de firma de índice no puede ser un tipo de unión. Considere usar un tipo de objeto mapeado en su lugar

Estoy tratando de usar el siguiente patrón:

 enum Option { ONE = 'one', TWO = 'two', THREE = 'three' } interface OptionRequirement { someBool: boolean; someString: string; } interface OptionRequirements { [key: Option]: OptionRequirement; }

Esto me parece muy sencillo, sin embargo, aparece el siguiente error:

Un tipo de parámetro de firma de índice no puede ser un tipo de unión. Considere usar un tipo de objeto asignado en su lugar.

¿Qué estoy haciendo mal?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puede usar el operador TS "en" y hacer esto:

 enum Options { ONE = 'one', TWO = 'two', THREE = 'three', } interface OptionRequirement { someBool: boolean; someString: string; } type OptionRequirements = { [key in Options]: OptionRequirement; // Note that "key in". }
over 4 years ago · Santiago Trujillo Relatório

0

La solución más simple es usar Record

 type OptionRequirements = Record<Options, OptionRequirement>

También puede implementarlo usted mismo como:

 type OptionRequirements = { [key in Options]: OptionRequirement; }

Esta construcción sólo está disponible para type , pero no como interface .

El problema en su definición es decir que la clave de su interfaz debe ser del tipo Options , donde Options es una enumeración, no una cadena, un número o un símbolo.

La key in Options significa "para esas claves específicas que están en el tipo de unión Opciones".

type alias es más flexible y potente que interface .

Si su tipo no necesita ser usado en clase, elija type sobre interface .

over 4 years ago · Santiago Trujillo Relatório

0

En mi caso:

 export type PossibleKeysType = | 'userAgreement' | 'privacy' | 'people'; interface ProviderProps { children: React.ReactNode; items: { // ↙ this colon was issue [key: PossibleKeysType]: Array<SectionItemsType>; }; }

Lo arreglé usando el operador in lugar de usar :

 ~~~ interface ProviderProps { children: React.ReactNode; items: { // ↙ use "in" operator [key in PossibleKeysType]: Array<SectionItemsType>; }; }
over 4 years ago · Santiago Trujillo 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