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
|
=== tests/cases/compiler/assignmentCompat1.ts ===
var x = { one: 1 };
>x : { one: number; }
>{ one: 1 } : { one: number; }
>one : number
>1 : 1
var y: { [index: string]: any };
>y : { [index: string]: any; }
>index : string
var z: { [index: number]: any };
>z : { [index: number]: any; }
>index : number
x = y; // Error
>x = y : { [index: string]: any; }
>x : { one: number; }
>y : { [index: string]: any; }
y = x; // Ok because index signature type is any
>y = x : { one: number; }
>y : { [index: string]: any; }
>x : { one: number; }
x = z; // Error
>x = z : { [index: number]: any; }
>x : { one: number; }
>z : { [index: number]: any; }
z = x; // Ok because index signature type is any
>z = x : { one: number; }
>z : { [index: number]: any; }
>x : { one: number; }
y = "foo"; // Error
>y = "foo" : "foo"
>y : { [index: string]: any; }
>"foo" : "foo"
z = "foo"; // OK, string has numeric indexer
>z = "foo" : "foo"
>z : { [index: number]: any; }
>"foo" : "foo"
z = false; // Error
>z = false : false
>z : { [index: number]: any; }
>false : false
|