Verificação de tipo de interface no TypeScript
No TypeScript, você pode encontrar um cenário em que determinar a conformidade de um objeto com uma interface predefinida em tempo de execução é crucial . Embora as verificações de tipo de classe que aproveitam a palavra-chave instanceof sejam simples, aplicá-la a interfaces apresenta um desafio.
Abordagens tradicionais, como confiar no operador instanceof, mostram-se ineficazes, pois as interfaces não têm representação como tipos distintos em JavaScript compilado. Em vez disso, os protetores de tipo personalizados oferecem uma solução:
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); }
Essa abordagem permite a verificação em tempo de execução da conformidade da interface sem a necessidade da palavra-chave instanceof.
Em situações em que vários membros devem ser verificados, uma propriedade discriminadora pode ser introduzida. Essa abordagem requer o gerenciamento de seus próprios discriminadores e a garantia de exclusividade para evitar conflitos:
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); }
Ao empregar protetores de tipo personalizados ou discriminadores, você pode realizar verificações de tipo de interface com eficácia em tempo de execução, aumentando a robustez de seus aplicativos TypeScript.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3