Bicep diagnostische code - BCP033

Deze diagnose treedt op wanneer u een waarde van een niet-overeenkomend gegevenstype toewijst.

Description

Er wordt een waarde van het type <data-type> verwacht, maar de opgegeven waarde is van het type <data-type>.

Level

Waarschuwing / Fout

Oplossing

Gebruik het verwachte gegevenstype. Als de opgegeven waarde een token is, plaatst u deze in de any()-functie om het probleem te verhelpen.

Voorbeelden

In het volgende voorbeeld wordt de diagnose opgehaald omdat het verwachte gegevenstype een tekenreeks is. De werkelijke opgegeven waarde is een geheel getal:

var myValue = 5

output myString string = myValue

U kunt de diagnose oplossen door een tekenreekswaarde op te geven:

var myValue = '5'

output myString string = myValue

In Azure Bicep ziet u fout BCP033 tijdens het gebruik van deployment().location als een standaardwaarde voor een parameter die wordt beperkt door een @allowed decorator is een veelvoorkomend scenario. Deze fout treedt op vanwege het strikte mechanisme voor de compilatietijd van Bicep. Voorbeeld:

targetScope = 'subscription'

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

Als u het gemak van standaardinstelling voor de metagegevenslocatie van de huidige implementatie wilt behouden, kunt u de controle van het type compileertijd omzeilen met behulp van de functie any() van Bicep Bicep. Deze functie vertelt de compiler dat de expressie wordt behandeld als losjes getypt:

targetScope = 'subscription'

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

Als uw implementatie strikt is gebonden aan één regio, kunt u voorkomen dat u de dynamische deployment().location metagegevens helemaal gebruikt en expliciet een standaardwaarde toewijst die in uw lijst aanwezig is.

Volgende stappen

Zie Bicep-kerndiagnose voor meer informatie over Bicep-diagnostische gegevens.