2
我在“或”类型中发现了奇怪的行为。不知道,如果它是一个错误或功能... 我想实现的:我的变量应该只允许一个属性'数据'的对象或一个属性'记录'的对象。但不是既有'数据'又有'财产'的对象。 所以:typescript 2.4.2“or”type strange behavior
type X = {
data: string
};
type Y = {
records: {
[recordId: number]: {
[attributeName: string]: any,
}
},
};
type XorY = X | Y;
let a:XorY = {
data: 'something',
records: {
12: {
someKey: 'someValue',
}
}
};
在我看来,分配到应该抛出一个错误。任何想法,我如何在ts中做这样的检查?
通常,'|'表示'或'和''^意味着XOR。其中'OR'包含在内,'XOR'是唯一的。你自己说这是'OR',所以我有点困惑,为什么你会认为'XOR'会在这里被使用?我可以看到有独家工会的效用,但我认为包容性工会更有用。考虑一下所有现有的JavaScript库,它们都有可以接受字符串的函数或者一个元素。希望将您的支持添加到我关联的github问题中,可以帮助他们了解该功能有多少兴趣。 – AndyJ