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 ().

2 Answers

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 are 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.

You want to use Tag[] to tell TypeScript you are declaring an array of Tag.

export class TagCloud { tags: Tag[]; locations: Location[]; constructor() { // TS already knows the type this.tags = [] this.locations =[] }
}

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like