forked from microsoft/TypeScript
/
specialIntersectionsInMappedTypes.types
45 lines (34 loc) · 1.13 KB
/
specialIntersectionsInMappedTypes.types
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