File: discriminatedUnionWithIndexSignature.types

package info (click to toggle)
node-typescript 5.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 497,488 kB
  • sloc: javascript: 2,107,274; makefile: 6; sh: 1
file content (55 lines) | stat: -rw-r--r-- 1,305 bytes parent folder | download
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
46
47
48
49
50
51
52
53
54
55
//// [tests/cases/compiler/discriminatedUnionWithIndexSignature.ts] ////

=== discriminatedUnionWithIndexSignature.ts ===
export interface UnionAltA {
    type?: 'text';
>type : "text" | undefined
}

export interface UnionAltB {
    type?: 'image' | 'video' | 'document';
>type : "image" | "video" | "document" | undefined
}

export type ValueUnion = UnionAltA | UnionAltB;
>ValueUnion : UnionAltA | UnionAltB

export type MapOrSingleton =
>MapOrSingleton : ValueUnion | { [key: string]: ValueUnion; }

    | {
        [key: string]: ValueUnion;
>key : string
    }
    | ValueUnion;

const withoutAsConst: MapOrSingleton = {
>withoutAsConst : MapOrSingleton
>{    1: {        type: 'text' /*as const*/,    },} : { 1: { type: "text"; }; }

    1: {
>1 : { type: "text"; }
>{        type: 'text' /*as const*/,    } : { type: "text"; }

        type: 'text' /*as const*/,
>type : "text"
>'text' : "text"

    },
};

const withAsConst: MapOrSingleton = {
>withAsConst : MapOrSingleton
>{    1: {        type: 'text' as const,    },} : { 1: { type: "text"; }; }

    1: {
>1 : { type: "text"; }
>{        type: 'text' as const,    } : { type: "text"; }

        type: 'text' as const,
>type : "text"
>'text' as const : "text"
>'text' : "text"

    },
};