typescript-arrays

Uso del Array en TypeScript

En TypeScript, un array es una colección ordenada de elementos, que pueden ser de cualquier tipo (aunque generalmente son homogéneos).

TypeScript proporciona varias formas de declarar y manipular arrays, haciendo que el manejo de colecciones de datos sea bastante cómodo y sencillo.

Existen dos sintaxis principales para declarar un array en TypeScript. La más habitual es empleando corchetes ([]), de la siguiente forma.

let numeros: number[] = [1, 2, 3, 4, 5];
let palabras: string[] = ["TypeScript", "JavaScript", "Node.js"];

Alternativamente podemos usando la Clase Genérica Array<T>

let numeros: Array<number> = [1, 2, 3, 4, 5];
let palabras: Array<string> = ["TypeScript", "JavaScript", "Node.js"];

Generalmente usaremos la primera, salvo en algún caso avanzado (como factorías) en las que deberemos usar el segundo

Arrays multidimensionales

Los arrays multidimensionales (matrices) se pueden declarar anidando arrays.

let matriz: number[][] = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

Iteración sobre arrays

TypeScript soporta la iteración mediante bucles tradicionales y la sintaxis for...of.

for (let i = 0; i < numeros.length; i++) {
    console.log(numeros[i]);
}

for (let num of numeros) {
    console.log(num);
}

Además, disponemos del método forEach, que es un método de Array que cumple la misma función (lo veremos en el siguiente apartado)

Métodos y propiedades de arrays

TypeScript hereda los métodos y propiedades de arrays de JavaScript, por lo que tenemos una gran cantidad de funciones disponibles manipular y operar con arrays.

Ejemplos Prácticos

Encontrar elementos duplicados

function encontrarDuplicados(arr: number[]): number[] {
    let duplicados: number[] = [];
    let contador: { [key: number]: number } = {};

    arr.forEach((num) => {
        contador[num] = (contador[num] || 0) + 1;
    });

    for (let num in contador) {
        if (contador[num] > 1) {
            duplicados.push(Number(num));
        }
    }

    return duplicados;
}

let numeros: number[] = [1, 2, 3, 4, 5, 2, 3, 4];
console.log(encontrarDuplicados(numeros));  // [2, 3, 4]

Ordenar un array de objetos

interface Persona {
    nombre: string;
    edad: number;
}

let personas: Persona[] = [
    { nombre: "Luis", edad: 25 },
    { nombre: "Ana", edad: 22 },
    { nombre: "Luis", edad: 30 }
];

personas.sort((a, b) => a.edad - b.edad);
console.log(personas);
// [
//     { nombre: "Ana", edad: 22 },
//     { nombre: "Luis", edad: 25 },
//     { nombre: "Luis", edad: 30 }
// ]