Al igual que todos los lenguajes fuertemente tipados (C++, C#), TypeScript permite crear matrices. Una matriz es una estructura ordenada por filas y columnas. El mejor ejemplo para entender una matriz es quizas el tres en linea
[
[”X”, “O”, “X”]
[”O”, “X”, “O”]
[”O”, “O”, “X”]
]
En el ejemplo que acabamos de ver tenemos un array que dentro tiene tres arrays. Esta es la definicion de matriz, un array que cuenta con otros arrays dentro. Ademas, fijate que son todos strings los array de esta matriz, por lo tanto podriamos decir que el tipo de esta matriz es un array que contiene arrays de matrices. Releelo de nuevo y vas a ver que va a quedarte claro. En TypeScript esto sería asi
const gameboard: string[][]=[
["X", "O", "X"],
["O", "O", "X"],
["X", "O", "O"]
]
Acá sería una buena idea tambien tipar los posibles valores del board asi nos aseguramos de que no se puedan modificar con otros valores que no queremos
type CellValues="X" | "O" | ""
const gameboard: CellValues[][]=[
["X", "O", "X"],
["O", "O", "X"],
["X", "O", "O"]
]
En el ejemplo anterior, la matriz no tiene un tamaño limitado y por lo tanto puedo agregar mas de tres valores, violando las reglas del tres en linea. Para eso, usamos lo que se llama tupla. Las tuplas son arrays que tienen definido su tamaño. En sencillas palabras, es decirle a TypeScript como será el template de nuestra matriz. En nuestro ejemplo, la tupla sería asi
type GameBoard=[
[CellValues, CellValues, CellValues],
[CellValues, CellValues, CellValues],
[CellValues, CellValues, CellValues]
]
Entonces, ahora puedo pasarle como tipo este template directamente a la variable gameboard
const gameboard: GameBoard=[
["X", "O", "X"],
["O", "O", "X"],
["X", "O", "O"]
]