Dans TypeScript, les tableaux peuvent être typés strictement en spécifiant le type des éléments via type[] ou Array<type>. Par exemple :
let arr: number[] = [1, 2, 3];
Les tuples sont des tableaux de longueur fixe avec des types pour chaque élément :
let tuple: [string, number] = ["age", 30];
Pièges :
push n'est pas interdit, mais le résultat sort déjà des limites de typage garanties.Les tuples en TypeScript peuvent-ils contenir un nombre variable d'éléments, et comment cela affectera-t-il la typage ?
Réponse : Oui, les tuples peuvent contenir des éléments restants en utilisant la syntaxe ..., mais exigent toujours un typage strict pour les éléments restants :
let tuple: [string, ...number[]] = ["id", 10, 20, 30];
Cependant, les éléments avant ... doivent être spécifiés, et le type pour le reste du tableau doit être unique.
Histoire
Dans un projet e-commerce, un développeur a essayé de sauvegarder plus de deux éléments dans un tuple [string, number] en utilisant push. Cela n'a pas généré d'erreur lors de la compilation, mais a cassé le fonctionnement d'une fonction qui attendait exactement deux éléments, ce qui a conduit à des erreurs lors du traitement des commandes.
Histoire
La fonction retournait un tuple [string, number], mais le consommateur s'attendait à un tableau de chaînes. La non-correspondance des types a causé une erreur difficile à détecter, ce qui a conduit à l'envoi de valeurs incorrectes en production.
Histoire
Lors de la migration du code de JavaScript vers TypeScript, des tableaux ont été utilisés à la place des tuples pour retourner plusieurs valeurs de différents types. Cela a violé le typage strict et a conduit à l'apparition de bugs dans le code subséquent qui se basait sur l'ordre et le type des valeurs.