Dans TypeScript, un dilemme courant se pose lorsque l'on tente de vérifier si une variable de type any adhère à une interface spécifiée au moment de l’exécution. Considérez le code suivant :
interface A { member: string; } var a: any = { member: "foobar" }; if (a instanceof A) alert(a.member);
Ici, le terrain de jeu TypeScript génère une erreur sur la dernière ligne, affirmant que le nom A n'est pas défini dans la portée actuelle. Cependant, cela est incorrect car A est clairement défini. Pour résoudre ce problème, il est important de comprendre que les interfaces n'ont aucune représentation dans le JavaScript généré, ce qui rend impossible les vérifications de type à l'exécution.
Ce dilemme découle de la nature dynamique de JavaScript, où les interfaces n'ont pas d'existence définie. Par conséquent, la question se pose : existe-t-il un moyen de vérifier le type des interfaces dans TypeScript ?
L'auto-complétion du terrain de jeu révèle en effet une méthode appelée Implements, nous laissant nous demander comment l'utiliser. C'est ici que les protections de type personnalisées entrent en jeu :
interface A { member: string; } function instanceOfA(object: any): object is A { return 'member' in object; } var a: any = { member: "foobar" }; if (instanceOfA(a)) { alert(a.member); }
Avec cette approche, vous pouvez vérifier le type d'une interface sans avoir besoin d'une instance de. Cependant, pour les cas plus complexes, envisagez d'utiliser des discriminateurs pour gérer vos propres discriminateurs et assurez-vous qu'aucun doublon ne se produit.
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!