Bicep código de diagnóstico – BCP033

Esse diagnóstico ocorre quando você atribui um valor de um tipo de dados incompatível.

Descrição

Esperado um valor de tipo <data-type> , mas o valor fornecido é do tipo <data-type>.

Nível

Aviso / Erro

Solução

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

Exemplos

O exemplo a seguir gera o diagnóstico porque o tipo de dados esperado é uma cadeia de caracteres. O valor real fornecido é um número inteiro:

var myValue = 5

output myString string = myValue

Você pode corrigir o diagnóstico fornecendo um valor de cadeia de caracteres:

var myValue = '5'

output myString string = myValue

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

targetScope = 'subscription'

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

Se você quiser manter a conveniência de usar o padrão para o local de metadados da implantação atual, poderá ignorar a verificação de tipo de tempo de compilação usando a função any() do Bicep. Essa função informa ao compilador para tratar a expressão como livremente tipada:

targetScope = 'subscription'

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

Se sua implantação estiver rigidamente associada a uma única região, você poderá evitar o uso total dos metadados dinâmicos deployment().location e atribuir explicitamente um valor padrão que existe dentro de sua lista.

Próximas etapas

Para obter mais informações sobre o diagnóstico do Bicep, consulte o diagnóstico principal do Bicep.