código de diagnóstico de Bicep: BCP033

Este diagnóstico se produce cuando se asigna un valor de un tipo de datos no coincidente.

Description

Se esperaba un valor de tipo <data-type> , pero el valor proporcionado es de tipo <data-type>.

Level

Advertencia / Error

Solución

Use el tipo de datos esperado. Si el valor proporcionado es un token, escríbalo en la función any() para mitigar el problema.

Ejemplos

En el ejemplo siguiente se genera el diagnóstico porque el tipo de datos esperado es una cadena. El valor proporcionado real es un entero:

var myValue = 5

output myString string = myValue

Puede corregir el diagnóstico proporcionando un valor de cadena:

var myValue = '5'

output myString string = myValue

En Azure Bicep, encontrar error BCP033 al usar deployment().location como valor predeterminado para un parámetro restringido por un decorador @allowed es un escenario común. Este error se produce debido a Bicep mecanismo estricto de seguridad de tipos en tiempo de compilación. Por ejemplo:

targetScope = 'subscription'

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

Si desea mantener la comodidad de establecer de forma predeterminada la ubicación de metadatos de la implementación actual, puede omitir la comprobación de tipos en tiempo de compilación mediante la función any() de Bicep. Esta función indica al compilador que trate la expresión como de tipo flexible:

targetScope = 'subscription'

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

Si la implementación está enlazada rígidamente a una sola región, puede evitar usar los metadatos dinámicos deployment().location por completo y asignar explícitamente un valor predeterminado que exista dentro de la lista.

Pasos siguientes

Para obtener más información sobre los diagnósticos de Bicep, consulte Diagnósticos principales de Bicep.