1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
=== tests/cases/compiler/specialIntersectionsInMappedTypes.ts ===
// Repro from #50683
type Alignment = (string & {}) | "left" | "center" | "right";
>Alignment : (string & {}) | "left" | "center" | "right"
type Alignments = Record<Alignment, string>;
>Alignments : { [x: string & {}]: string; left: string; center: string; right: string; }
const a: Alignments = {
>a : Alignments
>{ left: "align-left", center: "align-center", right: "align-right", other: "align-other",} : { left: string; center: string; right: string; other: string; }
left: "align-left",
>left : string
>"align-left" : "align-left"
center: "align-center",
>center : string
>"align-center" : "align-center"
right: "align-right",
>right : string
>"align-right" : "align-right"
other: "align-other",
>other : string
>"align-other" : "align-other"
};
a.left.length;
>a.left.length : number
>a.left : string
>a : Alignments
>left : string
>length : number
a.other.length; // Error expected here
>a.other.length : number
>a.other : string | undefined
>a : Alignments
>other : string | undefined
>length : number
|