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
DDDOriginal
2024-11-17 13:24:01672Durchsuche

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);
}

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);
}

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!

Stellungnahme:
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