Código diagnóstico do Bicep - BCP033

Este diagnóstico ocorre quando atribui um valor a um tipo de dado incompatível.

Description

Espera-se um valor de tipo <data-type> mas o valor fornecido é de tipo <data-type>.

Nível

Aviso / Erro

Solução

Use o tipo de dados esperado. Se o valor fornecido for um token, inclua-o na função any() para mitigar o problema.

Exemplos

O exemplo seguinte eleva o diagnóstico porque o tipo de dado esperado é uma cadeia. O valor real fornecido é um inteiro:

var myValue = 5

output myString string = myValue

Pode corrigir o diagnóstico fornecendo um valor de cadeia:

var myValue = '5'

output myString string = myValue

Em Azure Bicep, encontrar o Erro BCP033 ao usar deployment().location como valor padrão para um parâmetro restrito por um decorador @allowed é um cenário comum. Este erro ocorre devido ao rigoroso mecanismo de segurança de tipos em tempo de compilação do Bicep. Por exemplo:

targetScope = 'subscription'

@allowed([
  'southcentralus'
  'eastus2euap'
])
param location string = deployment().location

Se quiser manter a conveniência de usar por defeito a localização de metadados da implementação atual, pode contornar a verificação de tipo em tempo de compilação usando a função any() da Bicep. Esta função diz ao compilador para tratar a expressão como de tipo vago:

targetScope = 'subscription'

@allowed([
  'southcentralus'
  'eastus2euap'
])
// The any() function suppresses the BCP033 type-mismatch error
param location string = any(deployment().location)

Se a sua implementação estiver rigidamente ligada a uma única região, pode evitar usar os metadados dinâmicos deployment().location por completo e atribuir explicitamente um valor padrão que exista dentro da sua lista.

Próximos passos

Para obter mais informações sobre o diagnóstico do Bíceps, consulte Diagnóstico do núcleo do Bíceps.