Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce diagnostic se produit lorsque le @discriminator() décorateur est utilisé mais que la propriété discriminatoire spécifiée n’est pas une chaîne littérale obligatoire sur chaque type de membre syndical. La propriété discriminatoire doit être obligatoire (non optionnelle) et doit avoir un type de type littéral de chaîne (et non un type général string ) sur tous les membres du syndicat.
Description
La propriété «< discriminator-property-name> » doit être une chaîne littérale obligatoire sur tous les types de membres de l’union.
Level
Error
Solutions
Assurez-vous que la propriété discriminatrice :
- Est présent et obligatoire (sans
?suffixe) sur tous les types de membres syndicaux. - Est typé comme un littéral de chaîne (par exemple,
'foo'), et non comme un type généralstring.
Exemples
L’exemple suivant élève le diagnostic car la type propriété est totalement absente de FooConfig:
type FooConfig = {
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Vous pouvez corriger le diagnostic en ajoutant la propriété littérale de chaîne requise type à tous les types de membres de l’union :
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
L’exemple suivant élève le diagnostic car la type propriété est optionnelle (marquée par ?) sur FooConfig:
type FooConfig = {
type?: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Vous pouvez corriger le diagnostic en indiquant que les type biens requis pour tous les types de membres du syndicat :
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
L’exemple suivant élève le diagnostic car la type propriété sur FooConfig est typée comme un général string plutôt qu’un littéral de chaîne :
type FooConfig = {
type: string
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Vous pouvez corriger le diagnostic en changeant la type propriété par une chaîne littérale sur tous les types de membres de l’union :
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
L’exemple suivant élève le diagnostic car la type propriété sur FooConfig est un littéral entier plutôt qu’un littéral de chaîne :
type FooConfig = {
type: 1
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Vous pouvez corriger le diagnostic en changeant la type propriété par une chaîne littérale sur tous les types de membres de l’union :
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
L’exemple suivant soulève le diagnostic car la type propriété sur FooConfig est une union de littéraux de chaîne plutôt qu’un seul littéral de chaîne :
type FooConfig = {
type: 'foo' | 'baz'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Vous pouvez corriger le diagnostic en attribuant une seule chaîne littérale à la type propriété sur chaque type de membre de l’union :
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
Étapes suivantes
Pour plus d’informations sur les diagnostics Bicep, consultez diagnostics principaux Bicep.