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

141
Visualizações
Cómo comprobar el tipo de objeto en mecanografiado

Tengo un archivo JSON que contiene dos tipos diferentes de objetos. Quiero iterar sobre el JSON con respecto a su tipo. Para ilustrar mi problema creé dos tipos diferentes de Objeto Animal y Person

Ahora quiero verificar el tipo de Objeto si es un Animal o una Persona.

 type Animal = { name: string; legs: number; } type Person = { name: number; } const checkType = (isAnimalOrPerson: Animal | Person) =>{ if(isAnimalOrPerson instanceof Animal){ console.log("animal type"); } else{ } }

Aquí recibo un error si la condición dice: "Animal" only refers to a type, but is being used as a value here.

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

0

El "problema" con el type es que es un concepto que solo existe durante el desarrollo; una vez que transpila, desaparece, y TypeScript no puede prever la forma de un valor de tiempo de ejecución que podría pasar (a menos que haga una afirmación, es decir, controles explícitos sobre las propiedades que tiene un objeto). Si desea verificar el tipo, debe hacerlo de otra manera, por ejemplo, usando clases, y luego el enfoque solo funcionaría si realmente creara una instancia de la clase (en lugar de solo usarla como una forma):

 class Animal { name: string; age: number; legs: number; } class Person { name: string; age: number; job: string; education: string; } let a: Animal = new Animal(); let b: Animal = { name: "Rex", legs: 4, age: 3 }; let c = new Person(); function checkType(arg: Animal | Person): string { if (arg instanceof Animal) { return "This is an animal"; } else if (arg instanceof Person) { return "This is a person"; } return "Can't tell"; } console.log(checkType(a)); // This is an animal console.log(checkType(b)); // Can't tell console.log(checkType(c)); // This is a person
about 4 years ago · Juan Pablo Isaza Relatório

0

Hay varias formas de comprobar que el valor PersonorAnimal también satisface Animal .

  1. coaccionar por propiedad
 if ('legs' in toBeDetermined) { // toBeDetermined should be `Animal` in this block }
  1. Dale a Animal un unique symbol y compruébalo.
 const animalTag: unique symbol = Symbol("Animal tag"); type Animal = { __brand__: typeof animalTag; name: string; legs: number; } if (toBeDetermined.__brand__ === animalTag) { // toBeDetermined can be coerced manually into Animal }

Prefiero 1 porque Animal tiene legs de propiedad disjuntas.

about 4 years ago · Juan Pablo Isaza Relatório

0

No estoy seguro de si esto te ayudará.

https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates

actualización, acabo de encontrar este aspecto similar a su pregunta https://medium.com/ovrsea/checking-the-type-of-an-object-in-typescript-the-type-guards-24d98d9119b0

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