литейные машинопись массивы

голоса
22

Я пытаюсь использовать оболочку для библиотеки, которая хочет массив в качестве входного параметра.

Я попытался заливкой массив, но я получаю сообщение об ошибке: Не удается преобразовать «любой []» до «Массив»

Есть ли способ, чтобы сделать эту работу?

var rows = new Array(10);
var rows2 = <Array>rows; //<--- Cannot convert 'any[]' to 'Array'
Задан 09/10/2012 в 05:12
источник пользователем
На других языках...                            


4 ответов

голоса
33

Есть 4 возможных методов в машинописном Преобразователи для массивов:

let x = []; //any[]

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

asОператора в основном предназначена для *.tsxфайлов , чтобы избежать синтаксической неоднозначности.

Ответил 03/02/2016 в 16:09
источник пользователем

голоса
6

Я думаю, что правильный синтаксис:

var rows2 = <Array<any>>rows;

Вот как вы приводите к interface Array<T>

Ответил 03/02/2016 в 15:10
источник пользователем

голоса
4

Я думаю, что это просто ошибка - вы можете войти вопрос на сайте CodePlex?

В качестве обходного пути, вы можете написать <Array><any>rows;

Ответил 09/10/2012 в 05:33
источник пользователем

голоса
0

Простое решение для всех типов

const myArray = <MyType[]>value;
Ответил 02/01/2019 в 21:12
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more