【发布时间】:2021-08-19 16:49:40
【问题描述】:
我可以从一个字符串创建一个联合类型,一个字符串数组,如下所示:
const types = [
'AAA',
'BBB'
] as const
type myType = typeof types[number]
myType 现在是'AAA' | 'BBB'
现在我想像这样创建一个有区别的联合:
type typeAAA = {
type: 'AAA'
// further properties
}
type typeBBB = {
type: 'BBB'
// further properties
}
type typeAorB = typeAAA | typeBBB
我想确定,我只能将 myType 用于有区别的联合 - 这可能吗?
更新:
我想确保typeAorB 的情况与types 的值同步。现在我可以将任意字符串值分配给typeAAA 或type 或typeBBB
我不想使用接口或类。
我这样做是因为我想要的是验证数据的能力,并且我想验证 typeAorB 的 oneOf<myType>(伪代码)。
【问题讨论】:
-
“我想确认一下,我只能将
myType用于有区别的联合...” 你能澄清一下你的意思吗?听起来您正在尝试阻止某些事情,您能举个例子说明您要阻止的事情吗? -
我想确保
typeAorB的大小写与types的值同步。现在我可以将任何字符串值分配给typeAAA或type或typeBBB -
因此,例如,如果您使用
type: "CCC"创建了一个typeCCC,但在types中没有"CCC",则希望阻止您在typeAorB中包含typeCCC? -
是的,这正是我想要的。
标签: typescript