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

80
Visualizações
Los protectores de tipo en texto mecanografiado se están estrechando para no escribir nunca

Estoy migrando a una versión más nueva de TypeScript, pero comencé a recibir este error en Type Guards.
En la rama else, la pregunta que se muestra es del tipo nunca, en lugar de la pregunta que se muestra es del tipo Pregunta. Cuando ejecuto esto en TypeScript v3.9.5, funciona bien, pero en v4.5.4 da este error. Pegando debajo de mi fragmento de código. También hay una imagen de referencia del error en el código vs.

 export enum QuestionTypesEnum { TYPE1 = 'type1', TYPE2 = 'type2' } export type McqSingle = { hash: string type: QuestionTypesEnum answer: string; } export type McqMultiple = { hash: string type: QuestionTypesEnum answers: string[] } export type Question = | McqSingle | McqMultiple type EmptyQuestion = { hash: string } const isEmptyQuestion = (question: Question | EmptyQuestion): question is EmptyQuestion => { return !('type' in question) } let question: Question | EmptyQuestion = { hash: 'saas', type: QuestionTypesEnum.TYPE1 } if (isEmptyQuestion(question)) { } else { question.type // <-- Typescript complains that "Property 'type' does not exist on type 'never'" }

Enlace del patio de recreo

el error es:

Typescript se queja de que "la propiedad 'tipo' no existe en el tipo 'nunca'"

Error de TS en el código vs

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El problema es que Question es un superconjunto de EmptyQuestion (las instancias de Question son instancias de EmptyQuestion válidas). Como resultado, su predicado de tipo no reduce la variable de question en absoluto; su tipo en la rama if sigue siendo Question | EmptyQuestion .

Funciona si invierte el predicado de tipo para verificar la Question , ya que aunque la Question es una pregunta EmptyQuestion válida, la pregunta EmptyQuestion no es una Question válida:

 const isQuestion = (question: Question | EmptyQuestion): question is Question => { return 'type' in question; }; // ... if (isQuestion(question)) { question.type // ^? −−−− type is Question } else { question.hash // ^? −−−− type is EmptyQuestion }

Enlace del patio de recreo

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