Learn TypeScript Help

Type Guarding an Interface

Não temos no JS um equivalente para interfaces e nenhum das interfaces são incluidas no código JS gerado pelo compilador

Isso significa que o instanceof não pode ser usado para restringir tipos de interface e type guarding pode ser feito somente por checagem por um ou mais propriedades que são definidas pela interface

interface Person { name: string; getDetails(): string; } interface Product { name: string; price: number; } class Employee implements Person { constructor(public name: string, public company: string) { // no statements required } getDetails() { return `${this.name} works for ${this.company}`; } } class SportsProduct implements Product { constructor(public name: string, public category: string, public price: number) { // no statements required } } let data: (Person | Product)[] = [new Employee("Bob Smith", "Acme"), new SportsProduct("Running Shoes", "Running", 90.50), new Employee("Dora Peters", "BigCo")]; data.forEach(item => { if ("getDetails" in item) { console.log(`Person: ${item.getDetails()}`); } else { console.log(`Product: ${item.name}, ${item.price}`); } });
27 November 2025