TypeScript типизация

Стал ковырять typescript. И непонятно как типизировать подобное.

var firstArray = ["a", "b", "c"]; // инициализируем переменную, содержащую массив строк
var secondArray = [1, 2, 3]; // инициализируем переменную, содержащую массив чисел

var newArray= firstArray.concat( secondArray ); // объединяем массивы

console.log( newArray ); // результат ["a", "b", "c", 1, 2, 3]

Понятно, что на практике лучше, чтобы подобные разношерстные массивы не возникали. Но как их все таки типизировать? Пробовал и так [number, string], и так Array<number | string> что то все равно ошибку пишет.


Ответы (2 шт):

Автор решения: doox911
  1. Замечание к вопросу. Всегда прикладываете ошибку, если она есть.
  2. Типизировать можно кучей способов, но на мой взгляд, лучше максимально позволять TS выводить типы самому. И наилучшее решение для вашего вопроса, опять же на мой взгляд, это использовать современный синтаксис(spread syntax):
const firstArray = ["a", "b", "c"];
const secondArray = [1, 2, 3];

const newArray = [...firstArray,...secondArray];

введите сюда описание изображения

Песочница

→ Ссылка
Автор решения: Qwertiy

Playground

var firstArray = ["a", "b", "c"];
var secondArray = [1, 2, 3];

var newArray = (firstArray as (string | number)[]).concat(secondArray);

console.log(newArray); // результат ["a", "b", "c", 1, 2, 3]
→ Ссылка