El tipado de arrays es muy sencillo, tan solo hay que poner el tipo y a continuación los corchetes, ejemplo:

const users: string[] = ["Jhon", "Steve", "Anna"];

Como ya vimos en lo Los tipos básicos de Typescript, si definimos un valor inicial a la variable, Typescript puede asumir los tipos, por lo que en este ejemplo no haría falta indicar que es de tipo array de strings.

Pero ojo, Typescript sabe que es un array de strings, si más tarde intentamos hacer push() al array para meter un número, se va a quejar porque solo te va a dejar meter strings.

Los arrays también se pueden usar para Tipado de funciones en Typescript, ejemplo:

function addDates(dates: Date[], date: Date) {
	return [...dates, date];
}

Ojo al detallito de usar el spread de Javascript vanilla para devolver un nuevo array con el nuevo elemento sin modificar el original.

Tuplas (tipado de cada posición del array)

A veces necesitamos trabajar con arrays en los que la posición de los elementos es importante. Esto en otros lenguajes de programación se hacen usando las tuplas, pero como en Javascript no hay tuplas de forma nativa, se puede usar un array pero tipando las posiciones, es decir:

let usersAge: [string, number] = ["Jhon", 23];

El ejemplo anterior fuerza a que la variable usersAgesea siempre un array de dos posiciones exactamente en la que el primer valor es string y el segundo es number.

Por ejemplo, si más tarde en la ejecución intentas hacer esto:

usersAge = [12, 23, 233];

Typescript se va a quejar porque el primer valor no es string y porque además el array tiene 3 elementos y no 2.

Por ejemplo, se puede usar este sistema para devolver arrays en las funciones, usando el primer elemento para saber si ha sido error o no, y el segundo para el resultado.

let resultOk: [boolean, string] = [true, "Resultado de la función"];
let resultError: [boolean, string] = [false, "Mensaje de error"];

Este ejemplo no tiene mucho sentido porque, como he dicho antes, aquí Typescript asume el tipo y no hace falta ponerlo, pero usando los Type alias en Typescript vas a poder usar esto mismo para definir un tipo resultado para reusarlo en todas las funciones de tu aplicación.