web-dev-qa-db-fra.com

Tableaux de casting TypeScript

J'essaie d'utiliser un wrapper pour une bibliothèque qui veut un tableau comme paramètre d'entrée.

J'ai essayé de transtyper le tableau, mais j'ai une erreur: je ne peux pas convertir 'any []' en 'tableau'

Y at-il un moyen de faire ce travail?

var rows = new Array(10);
var rows2 = <Array>rows; //<--- Cannot convert 'any[]' to 'Array'
34
Adam Tegen

Il existe 4 méthodes de conversion possibles dans TypeScript pour les tableaux:

let x = []; //any[]

let y1 = x as number[];
let z1 = x as Array<number>;
let y2 = <number[]>x;
let z2 = <Array<number>>x;

L'opérateur as est principalement conçu pour les fichiers *.tsx afin d'éviter l'ambiguïté de la syntaxe.

51
shadeglare

Je pense que la bonne syntaxe est la suivante:

var rows2 = <Array<any>>rows;

C'est comme ça que vous lancez interface Array<T>

11
Tsvetomir Nikolov

Je pense que ceci est juste un bug - pouvez-vous enregistrer un problème sur le site CodePlex?

Pour contourner le problème, vous pouvez écrire <Array><any>rows;

5
Ryan Cavanaugh

Une solution simple pour tous les types

const myArray = <MyType[]>value;
0
Jayant Varshney