From ff56f62dbdccf0916a0e8733c0da20c0dec4cb49 Mon Sep 17 00:00:00 2001 From: Tom Wey Date: Fri, 3 Jul 2026 16:41:13 +0100 Subject: [PATCH 1/3] Can't initialise abstract properties --- typescript/4-classes/slides.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typescript/4-classes/slides.md b/typescript/4-classes/slides.md index ce861b5..e6d8151 100644 --- a/typescript/4-classes/slides.md +++ b/typescript/4-classes/slides.md @@ -581,12 +581,12 @@ The `abstract` modifier on fields and methods means they do not have an implemen ```ts // ❌ This is a concrete class. It can't have abstract members. class MyClass { - abstract myProp: number = 0; + abstract myProp: number; } // ✅ This is an abstract class. It can have abstract and concrete members. abstract class MyClass { - abstract myProp: number = 0 ; + abstract myProp: number; } ``` From b8a789cb930cd8a701eff61ebf1be0ecd695d8db Mon Sep 17 00:00:00 2001 From: Tom Wey Date: Fri, 3 Jul 2026 16:47:34 +0100 Subject: [PATCH 2/3] Clarify instantiating an abstract class error --- typescript/4-classes/slides.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/typescript/4-classes/slides.md b/typescript/4-classes/slides.md index e6d8151..590d81e 100644 --- a/typescript/4-classes/slides.md +++ b/typescript/4-classes/slides.md @@ -602,9 +602,15 @@ abstract class BankAccount { abstract calculateInterest(): number; } +// ❌ Cannot create an instance of an abstract class. +const b = new BankAccount(); + class CurrentAccount extends BankAccount { calculateInterest() { return 0.001; } } + +// ✅ This is concrete so we can instantiate it +const c = new CurrentAccount(); ``` From 0f4ac1ef866f9e06baa569210136361c6405f297 Mon Sep 17 00:00:00 2001 From: Tom Wey Date: Fri, 3 Jul 2026 16:55:04 +0100 Subject: [PATCH 3/3] Clarify single class inheritance --- typescript/4-classes/slides.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/typescript/4-classes/slides.md b/typescript/4-classes/slides.md index 590d81e..08be783 100644 --- a/typescript/4-classes/slides.md +++ b/typescript/4-classes/slides.md @@ -452,6 +452,8 @@ Classes can inherit members from other classes. There are two mechanisms: With `extends`, we can inherit members from a base class. We can also define new methods and fields on the "derived" class. +Classes can only extend a single other class. + ```ts class Base { field1: number = 10; @@ -515,7 +517,7 @@ If they have the same name, they will clash in the type namespace. ## Class Heritage - `implements` -Classes can implement multiple interfaces: +Classes can only extend one other class, but can implement multiple interfaces: ```ts interface Printable {