Adam Tegen
Adam Tegen

Reputation: 25905

TypeScript casting arrays

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

Answers (4)

shadeglare
shadeglare

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

Jayant Varshney
Jayant Varshney

Reputation: 1825

A simple solution for all types

const myArray = <MyType[]>value;

Upvotes: 5

Tsvetomir Nikolov
Tsvetomir Nikolov

Reputation: 394

I think the right syntax is:

var rows2 = <Array<any>>rows;

That's how you cast to interface Array<T>

Upvotes: 17

Ryan Cavanaugh
Ryan Cavanaugh

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

Related Questions