Vérification du type d'interface dans TypeScript
Dans TypeScript, vous pouvez rencontrer un scénario dans lequel il est crucial de déterminer la conformité d'un objet avec une interface prédéfinie au moment de l'exécution. . Bien que les vérifications de type de classe exploitant le mot-clé instanceof soient simples, son application aux interfaces présente un défi.
Les approches traditionnelles, telles que le recours à l'opérateur instanceof, s'avèrent inefficaces car les interfaces ne sont pas représentées en tant que types distincts dans le JavaScript compilé. Au lieu de cela, les gardes de type personnalisé offrent une solution :
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); }
Cette approche permet la vérification à l'exécution de la conformité de l'interface sans avoir besoin du mot-clé instanceof.
Dans les situations où plusieurs membres doivent être vérifiés, une propriété discriminante peut être introduite. Cette approche nécessite de gérer vos propres discriminateurs et de garantir l'unicité pour éviter les conflits :
interface A { discriminator: 'I-AM-A'; member: string; } function instanceOfA(object: any): object is A { return object.discriminator === 'I-AM-A'; } var a: any = { discriminator: 'I-AM-A', member: "foobar" }; if (instanceOfA(a)) { alert(a.member); }
En employant des gardes de type ou des discriminateurs personnalisés, vous pouvez effectuer efficacement des vérifications de type d'interface au moment de l'exécution, améliorant ainsi la robustesse de vos applications TypeScript.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3