typescript / intermediate
Snippet
Domain Modeling with Abstract Classes and Protected Method Hooks
Abstract classes allow developers to define contract structures and shared helper methods in object-oriented TypeScript code. Subclasses override abstract members while inheriting default functionality.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
abstract class DataExporter {public export(data: object[]): string {const formatted = this.formatData(data);return this.wrapOutput(formatted);}protected abstract formatData(data: object[]): string;protected wrapOutput(content: string): string {return `--- START ---${content}--- END ---`;}}class CsvExporter extends DataExporter {protected formatData(data: object[]): string {return data.map(row => Object.values(row).join(",")).join("\n");}}
Breakdown
1
abstract class DataExporter {
Defines an abstract base class that cannot be instantiated directly.
2
protected abstract formatData(data: object[]): string;
Declares an abstract method that derived classes must implement.
3
protected wrapOutput(content: string): string {
Provides reusable default implementation accessible to subclasses.