Tobias Stangl Tobias Stangl - 13 days ago 5
TypeScript Question

Error TS2322: Type 'Object[]' is not assignable to type '[Object]'

i have a code snippet like this:

export class TagCloud {

tags: [Tag];
locations: [Location];

constructor() {
this.tags = new Array<Tag>();
this.locations = new Array<Location>();
}
}


But this gives me the following errors:


error TS2322: Type 'Tag[]' is not assignable to type '[Tag]'.
Property '0' is missing in type 'Tag[]'.

error TS2322: Type 'Location[]' is not assignable to type '[Lo
cation]'.
Property '0' is missing in type 'Location[]'.


What am i doing wrong (the code is working though)?

I am using typings with the es6-shim Type descriptions (https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/es6-shim).

Many thanks,

Tobias

Answer

In typescript when you declare an array you either do:

let a: Array<number>;

or

let a: number[];

When you use:

let a: [number];

you in fact declaring a tuple, in this case of length one with number.
This is another tuple:

let a: [number, string, string];

The reason you get this error is because the length of the array you assign to tags and locations are 0, and it should be 1.