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"
},
};
|