Bicep 诊断代码 – BCP033

分配不匹配数据类型的值时,会出现此诊断。

说明

值的类型应为 <data-type>,但提供的值的类型为 <data-type>

Level

警告/错误

解决方案

使用预期的数据类型。 如果提供的值为令牌,请将它括在 any() function 中以解决问题。

示例

以下示例会引发此诊断,因为预期的数据类型是字符串。 实际提供的值是一个整数:

var myValue = 5

output myString string = myValue

提供字符串值即可修复此诊断:

var myValue = '5'

output myString string = myValue

在 Azure Bicep 中,在使用 作为受 deployment().location 修饰器限制的参数的默认值时,遇到 Error @allowed。 此错误是由于Bicep严格的编译时类型安全机制而发生的。 例如:

targetScope = 'subscription'

@allowed([
  'chinanorth3'
  'chinaeast3'
])
param location string = deployment().location

如果要保持默认为当前部署的元数据位置的便利性,可以使用 Bicep 的 any() 函数绕过编译时类型检查。 此函数告知编译器将表达式视为松散类型:

targetScope = 'subscription'

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

如果部署严格绑定到单个区域,则可以避免完全使用动态 deployment().location 元数据,并显式分配列表中存在的默认值。

后续步骤

有关 Bicep 诊断的详细信息,请参阅 Bicep 核心诊断