Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

133
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!