Freigeben über


Bizeps-Diagnosecode - BCP293

Diese Diagnose tritt auf, wenn man einen Gewerkschaftstyp mit Mitgliedern deklariert, die keine buchstäblichen Werte sind.

Description

Alle Member einer Union-Typdeklaration müssen Literalwerte sein.

Ebene

Fehler

Lösung

Stellen Sie sicher, dass alle Mitglieder einer gewerkschaftsähnlichen Erklärung wörtliche Werte sind. Weitere Informationen finden Sie unter Benutzerdefinierte Datentypen.

Examples

Das folgende Beispiel erhebt die Diagnose, weil die Absicht des folgenden Codes darin besteht, die Eingabe auf bestimmte Umgebungen ('dev', 'test', 'prod') zu beschränken und gleichzeitig andere String-Werte zuzulassen. Das Typisierungssystem von Biceps erlaubt diese Mischung in einer Gewerkschaft nicht.

type EnvironmentType = 'dev' | 'test' | 'prod' | string 

Wenn das Ziel ist, die drei erlaubten Werte strikt durchzusetzen und die Kompilierung zu vermeiden, entferne den generischen Stringtyp.

type EnvironmentType = 'dev' | 'test' | 'prod'

Wenn das Ziel ist, beliebigen String-Wert zuzulassen und die vordefinierte Liste nur ein Vorschlag ist, verwenden Sie direkt den generischen string Typ und entfernen Sie die Union ganz.

type EnvironmentType = string

Das folgende Beispiel ist ein weiteres Beispiel, bei dem das Mischen von Literalen mit Objekten, die generische Primitive enthalten, nicht erlaubt ist:

type oneOfSeveralObjects = {foo: 'bar', bar: string} | {fizz: 'buzz'} | {snap: 'crackle'}

Um das Problem zu beheben, müssen alle Mitglieder zur gleichen Typkategorie gehören. Da hier die Absicht eine Vereinigung komplexer Typen ist, besteht die einfachste Lösung darin, sicherzustellen, dass alle Eigenschaften, die als Konstanten gedacht sind, als Zeichenkettenliterale über die gesamte Vereinigung definiert sind.

type oneOfSeveralObjects = {foo: 'bar', bar: 'baz'} | {fizz: 'buzz'} | {snap: 'crackle'}

Nächste Schritte

Weitere Informationen zur Bicep-Diagnose finden Sie unter Bicep-Kerndiagnose.