Cet article explorera pourquoi Array.prototype.at()
est plus idéal que Array[index]
lors de l'accès aux éléments du tableau.
Dans le passé, lors de l'accès aux éléments du tableau, j'utilisais Array[index]
, tel que Array[1]
. C'est ce que je connais et comment j'ai appris à obtenir des éléments de tableau.
Cependant, un collègue a récemment demandé lors d'une revue de code : « Pourquoi ne pas utiliser Array.prototype.at()
au lieu d'utiliser l'index directement
Mon code est :
const element = arr[1];
Il a suggéré de remplacer par :
const element = arr.at(1);
Cette approche me démarque car elle semble très simple et intuitive.
Array.prototype.at()
accepte un entier comme argument et renvoie l'élément correspondant dans le tableau.
Par exemple, pour un tableau :
const arr = ["One", "Two", "Three"];
Appel :
arr.at(0); // 返回 "One"
C'est équivalent à la notation entre crochets array[0]
. Vous vous demandez peut-être quelle est la différence ? Nous aborderons ensuite les avantages de l’utilisation de cette approche.
Examinons quelques scénarios dans lesquels Array.prototype.at()
devrait être utilisé à la place de Array[index]
.
Supposons qu'il existe un tableau de chaînes :
const sports = ["basketball", "baseball", "football"];
Pour récupérer le dernier élément "football" du tableau, vous pouvez écrire :
const lastElement = sports[sports.length - 1];
C'est la bonne approche ; cependant, elle peut être écrite de manière plus concise en utilisant la méthode Array.prototype.at()
:
const lastElement = sports.at(-1);
Est-ce plus facile à lire ?
Dans TypeScript, la notation entre crochets n'inclut pas undefined
dans l'inférence de type.
const arr: string[] = []; const element = arr[0]; console.log(element); // undefined
element
est déduit comme string
, et non comme string | undefined
.
Nous nous attendons à ce que TypeScript génère des erreurs de compilation lors de l'écriture de ce code.
En général, nous voulons nous assurer que l'élément du tableau auquel on accède existe.
const arr: string[] = []; const element = arr[0]; if (typeof element === 'string') console.log(element);
Ce qui est étrange, c'est que nous vérifions le type d'élément que TypeScript déduit comme string
.
Vous pourriez penser à utiliser des assertions de type :
const element: string | undefined = arr[0];
Cependant, ce n’est pas idéal car nous ne devrions pas prendre sur nous d’écrire un code parfait.
Pour résoudre ce problème, nous pouvons adopter deux approches :
noUncheckedIndexedAccess
du compilateurLes deux méthodes fonctionnent bien, mais si vous utilisez Array.prototype.at()
vous n'avez pas besoin de faire les deux.
const arr: string[] = []; const element = arr.at(0); // string | undefined console.log(element);
Si vous essayez d'insérer element
dans une autre valeur de type string
vous obtiendrez une erreur de compilation :
const element = arr[1];
Utilisez Array.prototype.at()
pour écrire un code plus propre et éviter d'ajouter des fonctions et une configuration supplémentaires.
Array.prototype.at()
Explication sur le réseau de développeurs Mozilla : Lien (veuillez remplacer par le lien réel)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!