typescript 2.4.2 "eller" typ konstigt beteende
Jag hittade konstigt beteende i "eller"-typer. Vet inte om det är ett fel eller en funktion... Vad jag vill uppnå: min variabel ska bara tillåta ett objekt med egenskapen 'data' ELLER ett objekt med egenskapen 'records'. Men inte ett objekt med både 'data' och 'property'. Så:
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',
}
}
};
Enligt min åsikt ska tilldelningen till a ge ett fel. Några idéer om hur jag kan göra en sådan kontroll i ts?
Svar #1
Unionstyper är för närvarande endast inkluderande, vilket betyder att om någon av villkoren är sanna, så är det en matchning.
Det är för närvarande inte möjligt att skapa en exklusiv fackförening.
Det finns en pågående diskussion om att lägga till exklusiva föreningar som du kanske vill delta i om detta är en funktion du verkligen önskar.
Förslag: Tillåt exklusiva unioner med logisk eller (^) operator mellan typer #14094