Sdílet prostřednictvím


Diagnostický kód bicepsu - BCP293

Tato diagnostika nastává, když deklarujete typ sjednocení s členy, kteří nejsou doslovnými hodnotami.

Description

Všechny členy deklarace typu sjednocení musí být literální hodnoty.

Úroveň

Error

Solution

Ujistěte se, že všichni členové odborového typu deklarace jsou doslovnými hodnotami. Pro více informací viz Uživatelsky definované datové typy.

Examples

Následující příklad zvyšuje diagnostiku, protože účelem následujícího kódu je omezit vstup na konkrétní prostředí ("dev", "test", "prod"), přičemž zároveň povolit jakoukoli jinou hodnotu řetězce. Bicepsův systém typů tuto kombinaci v odborech nedovoluje.

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

Pokud je cílem striktně vynutit tři povolené hodnoty a jinak kompilace selhat, odstraňte obecný typ řetězce.

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

Pokud je cílem povolit libovolnou hodnotu řetězce a předdefinovaný seznam je jen návrh, použijte přímo generický string typ a sjednocení zcela odstranite.

type EnvironmentType = string

Následující příklad je dalším příkladem, kdy není povoleno míchání literálů s objekty obsahujícími generické primitiva:

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

Aby se problém vyřešil, musí být všichni členové stejné kategorie typu. Protože záměrem je zde sjednocení komplexních typů, nejjednodušší opravou je zajistit, aby všechny vlastnosti, které mají být konstantami, byly definovány jako literály řetězců v celém sjednocení.

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

Další kroky

Další informace o diagnostice Bicep najdete v tématu Diagnostika jádra Bicep.