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

211
Visualizações
La propiedad 'sándwiches' no existe en el tipo 'cadena'

Quiero tener un objeto que pueda contener cadenas o una matriz de cadenas. Todo con una llave de cadena. Este es un objeto de configuración que se usará en una aplicación.

Este objeto será dinámico (valores de estado definidos por el usuario), por lo que no tengo forma de especificar tipos según el nombre de clave específico. Es por eso que estoy usando firmas de índice ya que no sé cuáles serán las claves. Agregaré matrices de una parte de mi aplicación y cadenas de otra parte.

Estoy recibiendo errores como se ve a continuación:

PATIO DE JUEGOS TS

 type FiltersStateType = { filters: { [key: string]: Array<string> | string } } const example: FiltersStateType = { filters: { sandwiches: ['ham', 'cheese'], milkshakes: ['choc', 'banana'], randomString: 'hello', }, } example.filters.sandwiches.filter(item => item !== 'ham') // ❌ Property 'filter' does not exist on type 'string | string[]'. // ❌ Property 'filter' does not exist on type 'string' // do I need to type narrow every time to discern between string and string[]? if (Array.isArray(example.filters.sandwiches)) { example.filters.sandwiches.filter(item => item !== 'ham') }

Supongo que esto se debe a que TS no sabe si es una cadena o una matriz. ¿Necesito escribir estrecho cada vez para distinguir entre cadena y cadena []?

 if (Array.isArray(example.filters.sandwiches)) { example.filters.sandwiches.filter(item => item !== 'ham') }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puedo recomendarte que uses este ejemplo. La línea [key: string]: Array<string> | string; es para futuras propiedades que se pueden agregar en el futuro. Después de enumerar las propiedades de necesidad y sus tipos. El problema principal es que no puede combinar varios tipos y luego acceder a la propiedad que no está incluida en ninguno de los dos tipos. Por ejemplo, no enumeré la propiedad randomString , pero puedo acceder fácilmente a su n-ésimo elemento porque tanto la array como la string tienen esta propiedad.

 type FiltersStateType = { filters: { [key: string]: Array<string> | string; sandwiches: string[]; milkshakes: string[]; } } const example: FiltersStateType = { filters: { sandwiches: ['ham', 'cheese'], milkshakes: ['choc', 'banana'], randomString: 'hello', }, } example.filters.sandwiches = example.filters.sandwiches.filter(item => item !== 'ham') console.log(example.filters.sandwiches); console.log(example.filters.randomString[1]);

O puede usar as palabra clave:

 type FiltersStateType = { filters: { [key: string]: Array<string> | string; } } const example: FiltersStateType = { filters: { sandwiches: ['ham', 'cheese'], milkshakes: ['choc', 'banana'], randomString: 'hello', }, } example.filters.sandwiches = (example.filters.sandwiches as string[]).filter(item => item !== 'ham') console.log(example.filters.sandwiches); console.log(example.filters.randomString[1]);

Lo siento en SO Code Snippet No puedo ejecutar debido a as string[]

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