Arrays - TypeScript
Arrays são definidos usando a expressão []
let list: number[] = [10, 20, 30];
let colors: string[] = ["red", "green", "blue"];
console.log(list[0]);
console.log(colors[1]);
Assim como em JavaScript, você pode acessar elementos de um array usando índices.
Uma maneira alternativa de definir arrays é usar o tipo Array<>
let names: Array<string> = ["Tom", "Bob", "Alice"];
console.log(names[1]); // Bob
Mas, na verdade, formas de array como number[]
string[]
Array<number>
Array<string>
No geral, arrays em TypeScript suportam todas as operações que os arrays em JavaScript suportam.
Arrays permitem que você altere os valores de seus elementos:
const people = ["Tom", "Bob", "Sam"];
people[1] = "Kate";
console.log(people[1]); // Kate
Mas o TypeScript também permite definir arrays cujos elementos não podem ser alterados. Para isso, utiliza-se o tipo ReadonlyArray<>
Ao contrário do tipo Array
ReadonlyArray
const people: ReadonlyArray<string> = new ReadonlyArray("Tom", "Bob", "Sam");
Em vez disso, precisamos passar os valores como um array comum:
const people: ReadonlyArray<string> = ["Tom", "Bob", "Sam"];
Para definir arrays desse tipo, você também pode usar a abreviação de tipo: readonly TipoDeDados[]
const people: readonly string[] = ["Tom", "Bob", "Sam"];
Arrays do tipo ReadonlyArray
const people: ReadonlyArray<string> = ["Tom", "Bob", "Sam"];
people[1] = "Kate"; // ! Erro: não é possível modificar elementos de um ReadonlyArray
Também não podemos adicionar novos elementos ou remover elementos existentes:
const people: ReadonlyArray<string> = ["Tom", "Bob", "Sam"];
people.push("Kate"); // ! Erro - não é possível adicionar novos elementos
people.pop(); // ! Erro - não é possível remover elementos existentes
Além disso, durante a compilação, o compilador nos informará que os métodos push()
pop()
ReadonlyArray
Todas as outras operações que envolvem a leitura do array ainda podem ser usadas:
function printUsers(users: readonly string[]) {
for(const user of users) {
console.log(user);
}
}
function usersToString(users: ReadonlyArray<string>): string {
return users.join(", ");
}
const people: readonly string[] = ["Tom", "Bob", "Sam"];
printUsers(people);
console.log(usersToString(people));
Desestruturação de Arrays
Assim como em JavaScript, arrays suportam desestruturação em constantes e variáveis. Por exemplo:
const people: string[] = ["Tom", "Bob", "Sam"];
const [first, second, third] = people;
console.log(first); // Tom
console.log(second); // Bob
console.log(third); // Sam
Aqui, o array people é desestruturado em três constantes: first
second
third
Usando o operador ...
const people: string[] = ["Tom", "Bob", "Sam"];
const [first, ...rest] = people;
console.log(first); // Tom
console.log(rest[0]); // Bob
console.log(rest[1]); // Sam
Aqui, a constante first
"Tom"
rest
Você também pode deixar um espaço vazio em vez de uma constante se quiser pular o elemento correspondente do array:
const people: string[] = ["Tom", "Bob", "Sam", "Kate"];
const [, second, , fourth] = people; // pulamos o primeiro e o terceiro elementos do array
console.log(second); // Bob
console.log(fourth); // Kate