File: discriminatedUnionWithIndexSignature.ts

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 (29 lines) | stat: -rw-r--r-- 501 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
// @strict: true

export interface UnionAltA {
    type?: 'text';
}

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

export type ValueUnion = UnionAltA | UnionAltB;

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

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

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