Reputation: 25905
I'm trying to use a wrapper for a library that wants an Array as an input parameter.
I tried casting the Array, but I get an error: Cannot convert 'any[]' to 'Array'
Is there a way to make this work?
var rows = new Array(10);
var rows2 = <Array>rows; //<--- Cannot convert 'any[]' to 'Array'
Upvotes: 96
Views: 155312
Reputation: 7536
There are 4 possible conversion methods in TypeScript for arrays:
let x = []; //any[]
let y1 = x as number[];
let z1 = x as Array<number>;
let y2 = <number[]>x;
let z2 = <Array<number>>x;
The as
operator's mostly designed for *.tsx
files to avoid the syntax ambiguity.
Upvotes: 147
Reputation: 1825
A simple solution for all types
const myArray = <MyType[]>value;
Upvotes: 5
Reputation: 394
I think the right syntax is:
var rows2 = <Array<any>>rows;
That's how you cast to interface Array<T>
Upvotes: 17
Reputation: 221302
I think this is just a bug - can you log an issue on the CodePlex site?
As a workaround, you can write <Array><any>rows
;
Upvotes: 5