Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ta diagnostyka następuje, gdy deklarujesz typ unii z członkami, które nie są literalnymi wartościami.
Description
Wszystkie elementy członkowskie deklaracji typu unii muszą być wartościami literału.
Level
Error
Rozwiązanie
Upewnij się, że wszyscy członkowie deklaracji typu związkowego są wartościami dosłownymi. Więcej informacji można znaleźć w artykule Typy danych zdefiniowane przez użytkownika.
Przykłady
Poniższy przykład podnosi problem diagnostyczny, ponieważ celem poniższego kodu jest ograniczenie wejścia do określonych środowisk ("dev", "test", "prod"), jednocześnie próbując dopuścić dowolną inną wartość ciągu znaków. System typów Bicepsa nie pozwala na takie mieszanie w związku.
type EnvironmentType = 'dev' | 'test' | 'prod' | string
Jeśli celem jest ścisłe wymuszanie trzech dozwolonych wartości i niepowodzenie kompilacji, usuń typ ogólnego ciągu znaków.
type EnvironmentType = 'dev' | 'test' | 'prod'
Jeśli celem jest dopuszczenie dowolnej wartości ciągu znaków, a lista z góry jest tylko sugestią, użyj bezpośrednio typu generycznego string i całkowicie usuń unację.
type EnvironmentType = string
Poniższy przykład to kolejny przykład, gdzie mieszanie literałów z obiektami zawierającymi ogólne prymitywy jest niedozwolone:
type oneOfSeveralObjects = {foo: 'bar', bar: string} | {fizz: 'buzz'} | {snap: 'crackle'}
Aby rozwiązać problem, wszystkie elementy muszą należeć do tej samej kategorii typu. Ponieważ intencją jest tutaj suma typów zespolonych, najprostszym rozwiązaniem jest zapewnienie, że wszystkie własności przeznaczone jako stałe są zdefiniowane jako literale ciągów w całej sumie.
type oneOfSeveralObjects = {foo: 'bar', bar: 'baz'} | {fizz: 'buzz'} | {snap: 'crackle'}
Dalsze kroki
Aby uzyskać więcej informacji na temat diagnostyki Bicep, zobacz Diagnostyka rdzenia Bicep.