Obtener el nombre de la clase en TypeScript

Migel Hewage Nimesha 30 enero 2023
  1. Objetos y clases de TypeScript
  2. Obtenga el tipo de objeto de TypeScript en tiempo de ejecución
  3. Constructor de objetos TypeScript
Obtener el nombre de la clase en TypeScript

El viejo JavaScript está más interesado en la programación funcional. Con la evolución de TypeScript, que es el superconjunto de JavaScript, comenzó a admitir funciones de programación orientada a objetos.

La terminología básica detrás de la programación orientada a objetos es que un programa consta de entidades del mundo real que interactúan.

Objetos y clases de TypeScript

TypeScript admite la programación orientada a objetos con el concepto de clase. Una clase es un modelo de una entidad del mundo real que se utiliza para crear instancias de clase.

Las clases de TypeScript se han introducido desde el ES6. Una clase consta de campos, métodos y constructores.

class Animal {
    // properties/fields
    name: string;
    color: string;

    // constructor
    constructor(name: string) {
        this.name = name;
    }

    // methods/functions
    eat(): void {
        console.log("I am eating");
    }
}

Los campos se definen para almacenar el nombre y el color de un objeto Animal. Se utiliza un constructor de TypeScript para inicializar las propiedades del objeto.

Es una función especial que se puede parametrizar, como en el ejemplo anterior.

Con la clase Animal en su lugar, es posible crear objetos a partir de eso. TypeScript utiliza la palabra clave new para crear nuevos objetos a partir de una clase determinada.

Dado que TypeScript es un lenguaje fuertemente tipado, el tipo de las nuevas instancias de Animal será del tipo Animal.

let dog: Animal = new Animal('rocky');

Como puede ver, el constructor de la clase Animal ha sido llamado al crear la instancia Animal. El constructor de la clase Animal acepta un parámetro de cadena y tuvimos que pasarlo al crear el objeto.

Obtenga el tipo de objeto de TypeScript en tiempo de ejecución

Hay algunos escenarios en los que necesita conocer el tipo de objeto de TypeScript en tiempo de ejecución. Supongamos que tenemos una clase llamada Vehicle.

class Vehicle {
    vehicleNo: string;
    vehicleBrand: string

    constructor(vehicleNo: string, vehicleBrand: string) {
        this.vehicleNo = vehicleNo;
        this.vehicleBrand = vehicleBrand;
    }
}

Vamos a crear un nuevo objeto Vehicle, miniCar.

let miniCar: Vehicle = new Vehicle('GH-123', 'AUDI');

El miniCar es un objeto vehículo, y su tipo es Vehicle. Podemos comprobar el nombre de una clase específica utilizando la propiedad name de esa clase.

Sintaxis:

<class_name>.name

Comprobemos el nombre de la clase Vehículo.

console.log(Vehicle.name);

Producción :

Vehicle

Constructor de objetos TypeScript

Como se mencionó, cada clase de TypeScript consta de un constructor que puede ser un constructor personalizado escrito por el programador o un constructor predeterminado. Es un tipo especial de función TypeScript.

Por lo tanto, podemos obtener una referencia a la función constructor de un objeto.

Sintaxis:

Object.constructor

Obtengamos una referencia al constructor del objeto miniCar, como se muestra a continuación.

let miniCarConstructorRef: any = miniCar.constructor;

A continuación, registraremos el valor de la variable miniCarConstructorRef en la consola.

[Function: Vehicle]

Como era de esperar, hace referencia al constructor del objeto miniCar.

TypeScript le permite obtener el nombre del constructor del objeto usando la propiedad name.

Sintaxis:

Object.constructor.name

Usemos la sintaxis anterior para obtener el nombre de clase del objeto miniCar.

let classNameOfTheObject = miniCarConstructorRef.name;

Finalmente, registraremos el valor de la variable classNameOfTheObject en la consola.

console.log(classNameOfTheObject);

Producción :

Vehicle

Esta es la metodología recomendada para comprobar la clase a la que pertenece un objeto.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Artículo relacionado - TypeScript Class