"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como realizar verificações de tipo de interface de tempo de execução no TypeScript?

Como realizar verificações de tipo de interface de tempo de execução no TypeScript?

Publicado em 23/12/2024
Navegar:717

How to Perform Runtime Interface Type Checks in TypeScript?

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.

Tutorial mais recente Mais>

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