Learn TypeScript Help

Using an Abstract Class

Classes abstratas não podem ser instanciadas diretamente e são usadas para descrever funcionalidades comuns que devem ser implmenetadas pelas subclasses, forçando as subclasses a aderirem um formato especifico mas permitindo que tenhamos uma implementação especifica de metodos pela classe:

abstract class Person { constructor( public id: string, public name : string, public city: string ) { } getDetails() : string { return `${this.name}, ${this.getSpecificDetails()}`; } abstract getSpecificDetails() : string; } class Employee extends Person { constructor( public readonly id: string, public name: string, private dep : string ) { super(id, name, city); } getSpecificDetails(): string { return `$works in ${this.dep}`; } } class Customer extends Person { constructor(public readonly id: string, public name: string, public city: string, public creditLimit: number) { super(id, name, city); } getSpecificDetails() { return `has ${this.creditLimit} limit`; } } class Supplier extends Person { constructor(public readonly id: string, public name: string, public city: string, public companyName: string) { super(id, name, city); } getSpecificDetails() { return `works for ${this.companyName}`; } } let data: Person[] = [new Employee("fvega", "Fidel Vega", "Sales", "Paris"), new Customer("ajones", "Alice Jones", "London", 500)]; data.push(new Supplier("dpeters", "Dora Peters", "New York", "Acme")); data.forEach(item => console.log(item.getDetails()));
26 November 2025