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/inferentialTypingWithObjectLiteralProperties.ts ===
function f<T>(x: T, y: T): T {
>f : <T>(x: T, y: T) => T
>x : T
>y : T
return x;
>x : T
}
f({ x: [null] }, { x: [1] }).x[0] = "" // ok
>f({ x: [null] }, { x: [1] }).x[0] = "" : ""
>f({ x: [null] }, { x: [1] }).x[0] : number
>f({ x: [null] }, { x: [1] }).x : number[]
>f({ x: [null] }, { x: [1] }) : { x: number[]; }
>f : <T>(x: T, y: T) => T
>{ x: [null] } : { x: null[]; }
>x : null[]
>[null] : null[]
>null : null
>{ x: [1] } : { x: number[]; }
>x : number[]
>[1] : number[]
>1 : 1
>x : number[]
>0 : 0
>"" : ""
f({ x: [1] }, { x: [null] }).x[0] = "" // was error TS2011: Cannot convert 'string' to 'number'.
>f({ x: [1] }, { x: [null] }).x[0] = "" : ""
>f({ x: [1] }, { x: [null] }).x[0] : number
>f({ x: [1] }, { x: [null] }).x : number[]
>f({ x: [1] }, { x: [null] }) : { x: number[]; }
>f : <T>(x: T, y: T) => T
>{ x: [1] } : { x: number[]; }
>x : number[]
>[1] : number[]
>1 : 1
>{ x: [null] } : { x: null[]; }
>x : null[]
>[null] : null[]
>null : null
>x : number[]
>0 : 0
>"" : ""
|