Obtener el nombre de la clase en TypeScript
- Objetos y clases de TypeScript
- Obtenga el tipo de objeto de TypeScript en tiempo de ejecución
- Constructor de objetos 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.
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.