Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este diagnóstico ocurre cuando se utiliza el @discriminator() decorador pero la propiedad discriminadora especificada no es una cadena obligatoria literal en todos los tipos de miembro de la unión. La propiedad discriminadora debe ser obligatoria (no opcional) y debe tener un tipo literal de cadena (no un tipo general string ) en todos los miembros del sindicato.
Description
La propiedad "<discriminador-nombre-propiedad>" debe ser una cadena literal obligatoria en todos los tipos de miembros de la unión.
Nivel
Error
Soluciones
Asegura que la propiedad del discriminador:
- Está presente y es obligatorio (sin
?sufijo) en todos los tipos de miembros sindicales. - Se tipifica como un literal de cadena (por ejemplo,
'foo'), no como un tipo generalstring.
Ejemplos
El siguiente ejemplo eleva el diagnóstico porque la type propiedad falta por completo de FooConfig:
type FooConfig = {
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Puedes arreglar el diagnóstico añadiendo la propiedad literal de cadena requerida type a todos los tipos de miembros de la unión:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
El siguiente ejemplo eleva el diagnóstico porque la type propiedad es opcional (marcada con ?) en FooConfig:
type FooConfig = {
type?: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Puedes arreglar el diagnóstico estableciendo la type propiedad requerida para todos los tipos de miembros sindicales:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
El siguiente ejemplo eleva el diagnóstico porque la type propiedad en FooConfig se tipa como general string en lugar de literal de cadena:
type FooConfig = {
type: string
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Puedes arreglar el diagnóstico cambiando la type propiedad a una cadena literal en todos los tipos de miembros de la unión:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
El siguiente ejemplo plantea el diagnóstico porque la type propiedad en FooConfig es un literal entero en lugar de un literal de cadena:
type FooConfig = {
type: 1
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Puedes arreglar el diagnóstico cambiando la type propiedad a una cadena literal en todos los tipos de miembros de la unión:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
El siguiente ejemplo plantea el diagnóstico porque la type propiedad sobre FooConfig es una unión de literales de cadena en lugar de un solo literal de cadena:
type FooConfig = {
type: 'foo' | 'baz'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Puedes arreglar el diagnóstico asignando una única cadena literal a la type propiedad de cada tipo de miembro de la unión:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
Pasos siguientes
Para obtener más información sobre los diagnósticos de Bicep, consulte Diagnósticos principales de Bicep.