Lab 08: Classes Advanced

Time: 30 minutes | Level: Practitioner | Docker: docker run -it --rm node:20-alpine sh

Abstract classes, access modifiers, parameter properties, override keyword, class expressions, mixins pattern.


Step 1: Setup

docker run -it --rm node:20-alpine sh
npm install -g typescript ts-node
mkdir /lab08 && cd /lab08
cat > tsconfig.json << 'EOF'
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "moduleResolution": "node",
    "strict": true,
    "esModuleInterop": true
  }
}
EOF

Step 2: Abstract Classes


Step 3: Access Modifiers


Step 4: Parameter Properties


Step 5: Override Keyword


Step 6: Mixins Pattern


Step 7: Class Expressions


Step 8: Capstone — Animal Kingdom

Run:

📸 Verified Output:


Summary

Feature
Syntax
Purpose

Abstract class

abstract class A

Force subclass to implement

Abstract method

abstract fn(): T

Must be overridden

Public

public x

Default, accessible anywhere

Protected

protected x

Class + subclasses

Private

private x

Class only (TS-level)

JS Private

#x

Truly private (runtime)

Readonly

readonly x

Immutable after init

Parameter property

constructor(public x: T)

Declare + assign shorthand

Override

override fn()

Ensure parent has method

Mixin

function M<B>(base: B)

Composable class behaviors

Last updated