TypeScript version 2.4.2, compiled with --target ES6
The line of code:
var coins: { coin: number}[] = [1,1,1]
causes TypeScript to throw
error TS2322: Type 'number[]' is not assignable to type '{ coin: number; }[]'
However, the line:
var coins: { coin: number}[] = Array(3).fill(1)
compiles successfully, without errors.
Is this a TypeScript bug, or is it intended behavior (not type checking an array declared in this manner)?. If so, why?
The problem is that
Array(3)creates an array of length 3 and typeany[]and thenfillacts on that array. Sinceanycan be assigned to any type,any[]can also be assigned to any other typed array (including{ coin: number})If you were to specify the type parameter for
Arrayyou would get an error:There is no way to prevent the omission of the type argument for the array unfortunately.