49 VIEWS

It’s #FrontendFriday – Typ-Check mit instanceof und typeof

18.06.2021

Es ist so weit – kurz vor dem Wochenende heißt es wieder: It’s #FrontendFriday. Im heutigen Blogbeitrag geht es um den Typ-Check in TypeScript.

instanceof-Operator

Der instanceof-Operator testet, ob die Eigenschaft prototype eines Konstruktors irgendwo in der Prototypenkette eines Objekts vorkommt. Der Rückgabewert ist ein boolean Wert.

Syntax

Wie ist die Syntax bei der Nutzung des instanceof-Operators? Die Syntax ist wie folgt:

object instanceof constructor

object – Objekt, welches getestet wird

constructor – Funktion, in dem das Objekt enthalten sein soll

Beispiele

Beispiel 1: Objekt Fahrzeug mit Marke, Modell und Jahr.

Quelle: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof

In diesem Beispiel haben wir gesehen, dass sowohl die Konstante „auto“ als eine Instanz von „Car“ als auch „Object“ ist.

Beispiel 2: Reicht es aus, wenn eine einfache String-Variable deklariert wird oder muss wirklich der „String“-Konstruktor verwendet werden?

In diesem Beispiel sehen wir, dass eine „einfache“ Deklaration bei einem instanceof zu Fehler führen kann, auch wenn wir wissen, dass es ein String ist:

Hiermit können wir sehen, dass bei der Deklaration einer Variable wichtig ist, diesen mit dem Konstruktor des Objektes zu deklarieren.

typeof-Operator

Der typeof-Operator gibt einen String zurück, die den Typ des unbewerteten Operanden angibt.

Info:

Hinweis: ECMAScript 2019 und älter erlaubten Implementierungen, dass typeof einen beliebigen, von der Implementierung definierten String-Wert für nicht aufrufbare, nicht standardisierte exotische Objekte zurückgibt.

Der einzige bekannte Browser, der dies tatsächlich ausgenutzt hat, ist der alte Internet Explorer.

Syntax

Der Operator „typeof“ folgt mit dem Operand, auf den es überprüft werden soll:

typeof operand

Beispiele

Mit dem folgendem Beispiel kann man sehen, dass der Operator den Typ des Operanden zurückgibt:

Quelle: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

 

Fazit

Als Fazit kann man hierzu sagen, dass die Nutzung vom typeof-Operator und instanceof-Operator unterschiedliche Ergebnisse mit sich bringt. Hiermit konnten wir sehen, dass instaceof nicht für primitive Typen verwendet werden sollte. Es ist ziemlich offensichtlich, dass Sie keine Option haben, wenn es um benutzerdefinierte Typen geht, ebenso wie der Nutzen für „Objekt“-Typen. Aber wieso werden Funktionen mit „einfachen eingebauten Typen“ in einen Topf geworfen?

Ich finde es seltsam, dass und wie sich eine Funktion wie ein Objekt verhält, obwohl ihr Typ „function“ ist, was die Verwendung von „typeof“ möglich macht.


Quellen:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*Pflichtfelder

*