Klassenname in TypeScript abrufen
- TypeScript-Klassen und -Objekte
- Rufen Sie den Typ des TypeScript-Objekts zur Laufzeit ab
- Der Konstruktor des TypeScript-Objekts
Altes JavaScript beschäftigt sich mehr mit funktionaler Programmierung. Mit der Entwicklung von TypeScript, der Obermenge von JavaScript, begann es, objektorientierte Programmierfunktionen zu unterstützen.
Die grundlegende Terminologie hinter der objektorientierten Programmierung ist, dass ein Programm aus realen Einheiten besteht, die interagieren.
TypeScript-Klassen und -Objekte
TypeScript unterstützt die objektorientierte Programmierung mit dem class
-Konzept. Eine Klasse ist eine Blaupause einer realen Entität, die zum Erstellen von Klasseninstanzen verwendet wird.
TypeScript-Klassen wurden von ES6 eingeführt. Eine Klasse besteht aus Feldern, Methoden und Konstruktoren.
class Animal {
// properties/fields
name: string;
color: string;
// constructor
constructor(name: string) {
this.name = name;
}
// methods/functions
eat(): void {
console.log("I am eating");
}
}
Die Felder sind so definiert, dass sie den Namen und die Farbe eines Animal
-Objekts speichern. Ein TypeScript-Konstruktor wird verwendet, um die Eigenschaften des Objekts zu initialisieren.
Es handelt sich um eine parametrierbare Sonderfunktion, wie im obigen Beispiel.
Mit der Klasse Animal
ist es möglich, daraus Objekte zu erstellen. TypeScript verwendet das Schlüsselwort new
, um neue Objekte aus einer bestimmten Klasse zu erstellen.
Da TypeScript eine stark typisierte Sprache ist, wird der Typ der neuen Animal
-Instanzen vom Typ Animal
sein.
let dog: Animal = new Animal('rocky');
Wie Sie sehen können, wurde der Konstruktor der Klasse Animal
beim Erstellen der Instanz Animal
aufgerufen. Der Klassenkonstruktor Animal
akzeptiert einen String-Parameter, den wir beim Erstellen des Objekts übergeben mussten.
Rufen Sie den Typ des TypeScript-Objekts zur Laufzeit ab
Es gibt einige Szenarien, in denen Sie den Typ des TypeScript-Objekts zur Laufzeit kennen müssen. Nehmen wir an, wir haben eine Klasse namens Vehicle
.
class Vehicle {
vehicleNo: string;
vehicleBrand: string
constructor(vehicleNo: string, vehicleBrand: string) {
this.vehicleNo = vehicleNo;
this.vehicleBrand = vehicleBrand;
}
}
Lassen Sie uns ein neues Vehicle
-Objekt erstellen, miniCar
.
let miniCar: Vehicle = new Vehicle('GH-123', 'AUDI');
Das miniCar
ist ein Vehicle
-Objekt, und sein Typ ist ein Vehicle
. Wir können den Namen einer bestimmten Klasse überprüfen, indem wir die Eigenschaft name
dieser Klasse verwenden.
Syntax:
<class_name>.name
Lassen Sie uns den Namen der Klasse Vehicle
überprüfen.
console.log(Vehicle.name);
Ausgabe:
Vehicle
Der Konstruktor des TypeScript-Objekts
Wie bereits erwähnt, besteht jede TypeScript-Klasse aus einem Konstruktor, der ein vom Programmierer geschriebener benutzerdefinierter Konstruktor oder ein Standardkonstruktor sein kann. Es ist eine spezielle Art von TypeScript-Funktion.
Daher können wir einen Verweis auf die Konstruktor
-Funktion eines Objekts erhalten.
Syntax:
Object.constructor
Lassen Sie uns eine Referenz auf den Konstruktor des miniCar
-Objekts erhalten, wie im Folgenden gezeigt.
let miniCarConstructorRef: any = miniCar.constructor;
Als nächstes werden wir den Variablenwert miniCarConstructorRef
in der Konsole protokollieren.
[Function: Vehicle]
Wie erwartet verweist es auf den Konstruktor des miniCar
-Objekts.
Mit TypeScript können Sie den Konstruktornamen des Objekts mithilfe der Eigenschaft name
abrufen.
Syntax:
Object.constructor.name
Lassen Sie uns die obige Syntax verwenden, um den Klassennamen des miniCar
-Objekts zu erhalten.
let classNameOfTheObject = miniCarConstructorRef.name;
Schließlich werden wir den Variablenwert classNameOfTheObject
in der Konsole protokollieren.
console.log(classNameOfTheObject);
Ausgabe:
Vehicle
Dies ist die empfohlene Methode, um die Klasse zu überprüfen, zu der ein Objekt gehört.
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.