Maison > interface Web > js tutoriel > Pourquoi TypeScript génère-t-il une erreur lors de l'utilisation de « Array.prototype.includes() » avec différents types ?

Pourquoi TypeScript génère-t-il une erreur lors de l'utilisation de « Array.prototype.includes() » avec différents types ?

Susan Sarandon
Libérer: 2024-10-27 02:31:03
original
399 Les gens l'ont consulté

Why Does TypeScript Throw an Error When Using `Array.prototype.includes()` with Different Types?

Pourquoi Array.prototype.includes() nécessite des types correspondants pour les éléments du tableau

La méthode Array.prototype.includes() vise à déterminer si un tableau contient un élément spécifique. Pour garantir des résultats précis et fiables, le paramètre searchElement doit correspondre au type des éléments du tableau. Cette sécurité de type évite les comparaisons erronées et maintient l'intégrité des données du tableau.

Considérez l'extrait de code suivant :

<code class="js">type AllowedChars = 'x' | 'y' | 'z';
const exampleArr: AllowedChars[] = ['x', 'y', 'z'];

function checkKey(e: KeyboardEvent) { 
    if (exampleArr.includes(e.key)) { 
        // ...
    } 
}</code>
Copier après la connexion

Le compilateur TypeScript signale une erreur, indiquant que l'e.key Le paramètre ne correspond pas au type AllowedChars des éléments exampleArr. Cette erreur est due au fait que la méthode include() suppose que searchElement a le même type que les éléments du tableau.

Cela peut sembler contradictoire puisque Array.prototype.includes() renvoie une valeur booléenne plutôt qu'une affectation, comme suggère l'erreur. Cependant, le système de types de TypeScript joue ici un rôle crucial.

L'inclusion d'un élément dans le tableau implique que le type de l'élément est cohérent avec les éléments du tableau. Cependant, dans l'exemple fourni, le type du paramètre e.key est une chaîne, tandis que les éléments exampleArr sont du type AllowedChars. Cette incompatibilité nécessite des assertions de type ou un élargissement de type pour remplacer les attentes du système de types TypeScript.

L'approche la plus simple et la plus recommandée pour résoudre ce problème consiste à élargir le type de exampleArr au type plus large de string[], ou pour restreindre le paramètre searchElement afin d'inclure uniquement les caractères autorisés. Ces modifications garantissent la compatibilité des types, évitant ainsi toute erreur ou incohérence potentielle liée au type.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal