Heim >Web-Frontend >js-Tutorial >Wie führe ich eine Typprüfung der Laufzeitschnittstelle in TypeScript durch?
In TypeScript tritt ein häufiges Dilemma auf, wenn versucht wird, zu überprüfen, ob eine Variable vom Typ „any“ eingehalten wird eine angegebene Schnittstelle zur Laufzeit. Betrachten Sie den folgenden Code:
interface A { member: string; } var a: any = { member: "foobar" }; if (a instanceof A) alert(a.member);
Hier generiert der TypeScript-Playground in der letzten Zeile einen Fehler und behauptet, dass der Name A im aktuellen Bereich undefiniert sei. Dies ist jedoch falsch, da A klar definiert ist. Um dieses Problem zu lösen, ist es wichtig zu verstehen, dass Schnittstellen keine Darstellung im generierten JavaScript haben, wodurch Laufzeittypprüfungen unmöglich sind.
Dieses Dilemma ergibt sich aus der dynamischen Natur von JavaScript, bei der Schnittstellen keine definierte Existenz haben. Folglich stellt sich die Frage: Gibt es eine Möglichkeit, in TypeScript eine Typprüfung für Schnittstellen durchzuführen?
Die automatische Vervollständigung des Spielplatzes enthüllt tatsächlich eine Methode namens „Implements“, sodass wir uns fragen, wie wir sie verwenden sollen. Hier kommen benutzerdefinierte Typwächter ins Spiel:
interface A { member: string; } function instanceOfA(object: any): object is A { return 'member' in object; } var a: any = { member: "foobar" }; if (instanceOfA(a)) { alert(a.member); }
Mit diesem Ansatz können Sie eine Schnittstelle typüberprüfen, ohne dass eine Instanz von erforderlich ist. Erwägen Sie jedoch bei komplexeren Fällen die Verwendung von Diskriminatoren, um Ihre eigenen Diskriminatoren zu verwalten und sicherzustellen, dass keine Duplikate entstehen.
Das obige ist der detaillierte Inhalt vonWie führe ich eine Typprüfung der Laufzeitschnittstelle in TypeScript durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!