Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esse diagnóstico ocorre quando o @discriminator() decorador é usado, mas a propriedade discriminadora especificada não é uma string literal exigida em todo tipo de membro de união. A propriedade discriminadora deve ser obrigatória (não opcional) e deve ter um tipo literal de string (não um tipo geral string ) em todos os membros do sindicato.
Descrição
A propriedade "<discriminador-nome-propriedade>" deve ser uma string literal obrigatória em todos os tipos de membros de união.
Nível
Erro
Solutions
Garanta que a propriedade discriminadora:
- Está presente e é obrigatório (sem
?sufixo) em todos os tipos de membros do sindicato. - É tipado como um literal de string (por exemplo,
'foo'), não como um tipo geralstring.
Exemplos
O exemplo a seguir eleva o diagnóstico porque a type propriedade está totalmente ausente de FooConfig:
type FooConfig = {
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Você pode corrigir o diagnóstico adicionando a propriedade literal de string exigida type a todos os tipos de membros da união:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
O exemplo a seguir eleva o diagnóstico porque a type propriedade é opcional (marcada com ?) em FooConfig:
type FooConfig = {
type?: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Você pode corrigir o diagnóstico tornando a type propriedade exigida para todos os tipos de membros do sindicato:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
O exemplo a seguir eleva o diagnóstico porque a type propriedade em FooConfig é tipada como um geral string em vez de um literal de cadeia:
type FooConfig = {
type: string
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Você pode corrigir o diagnóstico mudando a type propriedade para uma string literal em todos os tipos de membros de união:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
O exemplo a seguir eleva o diagnóstico porque a type propriedade em FooConfig é um literal inteiro e não um literal de cadeia:
type FooConfig = {
type: 1
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Você pode corrigir o diagnóstico mudando a type propriedade para uma string literal em todos os tipos de membros de união:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
O exemplo a seguir levanta o diagnóstico porque a type propriedade em FooConfig é uma união de literais de cadeia em vez de um único literal de cadeia:
type FooConfig = {
type: 'foo' | 'baz'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
Você pode corrigir o diagnóstico atribuindo uma única string literal à type propriedade em cada tipo de membro da união:
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
type ServiceConfig = FooConfig | BarConfig
param config ServiceConfig
Próximas Etapas
Para obter mais informações sobre o diagnóstico do Bicep, consulte o diagnóstico principal do Bicep.