Closed
Description
TypeScript Version: 2.1.4
The inferred type of a tuple expression is an array, for example
const foo = ['hello', 3, true] // foo: (string | number | boolean)[]
which is a pain when what you really wanted was a tuple; you need to give a type ascription in order to tell the compiler you meant it to be a tuple, e.g.
const foo: [string, number, boolean] = ['hello', 3, true]
It seems like this is wholly unnecessary, because the type [string, number, boolean]
is assignable to (string | number | boolean)[]
, and carries strictly more information. So the compiler is prematurely throwing away information, when it could just wait and see if later on the type needs to be specialized to an array.