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
|
=== tests/cases/compiler/inferenceUnionOfObjectsMappedContextualType.ts ===
type Entity = {
>Entity : { someDate: Date | null; } & ({ id: string; } | { id: number; })
someDate: Date | null;
>someDate : Date | null
>null : null
} & ({ id: string; } | { id: number; })
>id : string
>id : number
type RowRendererMeta<TInput extends {}> = {
>RowRendererMeta : RowRendererMeta<TInput>
[key in keyof TInput]: { key: key; caption: string; formatter?: (value: TInput[key]) => string; };
>key : key
>caption : string
>formatter : ((value: TInput[key]) => string) | undefined
>value : TInput[key]
}
type RowRenderer<TInput extends {}> = RowRendererMeta<TInput>[keyof RowRendererMeta<TInput>];
>RowRenderer : RowRenderer<TInput>
const test: RowRenderer<Entity> = {
>test : RowRenderer<Entity>
>{ key: 'someDate', caption: 'My Date', formatter: (value) => value ? value.toString() : '-' // value: any} : { key: "someDate"; caption: string; formatter: (value: Date | null) => string; }
key: 'someDate',
>key : "someDate"
>'someDate' : "someDate"
caption: 'My Date',
>caption : string
>'My Date' : "My Date"
formatter: (value) => value ? value.toString() : '-' // value: any
>formatter : (value: Date | null) => string
>(value) => value ? value.toString() : '-' : (value: Date | null) => string
>value : Date | null
>value ? value.toString() : '-' : string
>value : Date | null
>value.toString() : string
>value.toString : () => string
>value : Date
>toString : () => string
>'-' : "-"
}
|