Heim > Web-Frontend > js-Tutorial > Wie erreicht man eine Laufzeit-Typprüfung für Schnittstellen in TypeScript?

Wie erreicht man eine Laufzeit-Typprüfung für Schnittstellen in TypeScript?

DDD
Freigeben: 2024-11-17 13:24:01
Original
679 Leute haben es durchsucht

How to Achieve Runtime Type Checking for Interfaces in TypeScript?

Schnittstellentypprüfung in TypeScript

In TypeScript definieren Schnittstellen Verträge, denen Objekte folgen können, aber sie erzwingen ihre Implementierung nicht zur Laufzeit . Dies bedeutet, dass die Verwendung von „instanceof“ zum Überprüfen, ob eine Variable eine Schnittstelle implementiert, fehlschlägt.

Um eine Laufzeit-Typprüfung für Schnittstellen zu erreichen, können Sie benutzerdefinierte Typschutzvorrichtungen verwenden. Dies sind Funktionen, die ein Objekt als Argument verwenden und einen booleschen Wert zurückgeben, der angibt, ob es die gewünschte Schnittstelle implementiert:

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);
}
Nach dem Login kopieren

Für Schnittstellen mit einer großen Anzahl von Mitgliedern können Sie eine Diskriminatoreigenschaft hinzufügen:

interface A {
    discriminator: 'I-AM-A';
    member: string;
}

function instanceOfA(object: any): object is A {
    return object.discriminator === 'I-AM-A';
}

var a: any = { discriminator: 'I-AM-A', member: "foobar" };

if (instanceOfA(a)) {
    alert(a.member);
}
Nach dem Login kopieren

Dies ermöglicht eine effiziente Typprüfung, ohne dass alle Mitglieder einzeln überprüft werden müssen.

Das obige ist der detaillierte Inhalt vonWie erreicht man eine Laufzeit-Typprüfung für Schnittstellen in TypeScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage