Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze diagnose gebeurt wanneer je een vakbondstype aangeeft met leden die geen letterlijke waarden zijn.
Description
Alle leden van een unietypedeclaratie moeten letterwaarden zijn.
Level
Fout
Solution
Zorg ervoor dat alle leden van een vakbondsverklaring letterlijke waarden zijn. Voor meer informatie, zie Gebruikersgedefinieerde datatypes.
Voorbeelden
Het volgende voorbeeld verhoogt de diagnostische test omdat de bedoeling achter de volgende code is om de invoer te beperken tot specifieke omgevingen ('dev', 'test', 'prod') terwijl ook andere stringwaarden worden toegestaan. Het typesysteem van Bicep staat deze mix niet toe binnen een vakbond.
type EnvironmentType = 'dev' | 'test' | 'prod' | string
Als het doel is om de drie toegestane waarden strikt te handhaven en compilatie anders te laten mislukken, verwijder dan het generieke stringtype.
type EnvironmentType = 'dev' | 'test' | 'prod'
Als het doel is om elke stringwaarde toe te staan en de vooraf gedefinieerde lijst slechts een suggestie is, gebruik dan direct het generieke string type en verwijder de unie helemaal.
type EnvironmentType = string
Het volgende voorbeeld is een ander voorbeeld waarbij het mengen van literals met objecten die generieke primitieven bevatten niet is toegestaan:
type oneOfSeveralObjects = {foo: 'bar', bar: string} | {fizz: 'buzz'} | {snap: 'crackle'}
Om het probleem op te lossen, moeten alle leden tot dezelfde typecategorie behoren. Aangezien de bedoeling hier een unie van complexe types is, is de eenvoudigste oplossing om ervoor te zorgen dat alle eigenschappen die als constanten bedoeld zijn, gedefinieerd zijn als stringliteralen door de hele unie.
type oneOfSeveralObjects = {foo: 'bar', bar: 'baz'} | {fizz: 'buzz'} | {snap: 'crackle'}
Volgende stappen
Zie Bicep-kerndiagnose voor meer informatie over Bicep-diagnostische gegevens.