你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

肱二头肌诊断代码 - BCP293

当你声明一个成员不是字面值的工会类型时,就会出现这种诊断。

Description

联合类型声明的所有成员必须是文本值。

级别

错误

解决方案

确保所有联合类型声明的成员都是字面值。 更多信息请参见 用户定义数据类型

例子

以下示例提及诊断问题,是因为以下代码背后的意图是限制输入到特定环境('dev'、'test'、'prod'),同时尝试允许任何其他字符串值。 Bicep 的类型系统不允许在联合体中混合这种类型。

type EnvironmentType = 'dev' | 'test' | 'prod' | string 

如果目标是严格执行三个允许的值并使编译失败,则移除通用字符串类型。

type EnvironmentType = 'dev' | 'test' | 'prod'

如果目标是允许任意字符串值,而预定义列表只是建议,直接使用泛型 string ,完全去除并集。

type EnvironmentType = string

以下示例是另一个不允许将文字与包含泛型原语的对象混合的例子:

type oneOfSeveralObjects = {foo: 'bar', bar: string} | {fizz: 'buzz'} | {snap: 'crackle'}

要解决这个问题,所有成员必须属于同一类型类别。 由于这里的意图是复类型的并集,最简单的解决办法是确保所有意图为常量的属性在并集中定义为字符串文字。

type oneOfSeveralObjects = {foo: 'bar', bar: 'baz'} | {fizz: 'buzz'} | {snap: 'crackle'}

后续步骤

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