分配不匹配数据类型的值时,会出现此诊断。
说明
值的类型应为 <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 核心诊断。