Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa diagnostica avviene quando viene utilizzato il @discriminator() decorator ma la proprietà discriminatrice specificata non è una stringa obbligatoria letterale su ogni tipo di membro unionista. La proprietà discriminatoria deve essere richiesta (non opzionale) e deve avere un tipo di letterale di stringa (non un tipo generale string ) su tutti i membri del sindacato.
Description
La proprietà "<discriminatore-property-name>" deve essere una stringa letterale obbligatoria su tutti i tipi di membri union.
Level
Error
Solutions
Assicurati che la proprietà discriminatrice:
- È presente e obbligatorio (senza
?suffisso) su tutti i tipi di membri sindacali. - Viene tipizzato come letterale di stringa (ad esempio,
'foo'), non come tipo generalestring.
Examples
Il seguente esempio solleva la diagnostica perché la type proprietà manca completamente da FooConfig:
type FooConfig = {
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Puoi risolvere la diagnostica aggiungendo la proprietà letterale della stringa richiesta type a tutti i tipi di membri union:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
Il seguente esempio solleva la diagnostica perché la type proprietà è opzionale (contrassegnata con ?) su FooConfig:
type FooConfig = {
type?: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Puoi risolvere la diagnosi rendendo la type proprietà richiesta per tutti i tipi di membri sindacali:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
Il seguente esempio solleva la diagnostica perché la type proprietà su FooConfig è tipizzata come un generale string piuttosto che come un letterale di stringa:
type FooConfig = {
type: string
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Puoi risolvere la diagnostica cambiando la type proprietà in una stringa letterale su tutti i tipi di membri union:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
Il seguente esempio solleva la diagnostica perché la type proprietà su FooConfig è un letterale intero piuttosto che un letterale di stringa:
type FooConfig = {
type: 1
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Puoi risolvere la diagnostica cambiando la type proprietà in una stringa letterale su tutti i tipi di membri union:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
Il seguente esempio solleva la diagnostica perché la type proprietà su FooConfig è un'unione di letterali di stringa piuttosto che un singolo letterale di stringa:
type FooConfig = {
type: 'foo' | 'baz'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Puoi risolvere la diagnostica assegnando una singola stringa letterale alla type proprietà su ogni tipo di membro unionista:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
Passaggi successivi
Per altre informazioni sulla diagnostica Bicep, vedere Diagnostica dei core Bicep.