We can only refer to one type when declaring a generic type constraint. Let's imagine that we need a generic class to be constrained, so it only allows types that extend the following two interfaces:
interface Foo { doSomething(): void; } interface Bar { doSomethingElse(): void; }
We may think that we can define the required generic constraint as follows:
class Example1<T extends Foo, Bar> { private prop!: T; public doEverything() { this.prop.doSomething(); this.prop.doSomethingElse(); // error } }
However, this code snippet will throw a compilation error. We cannot specify multiple types when declaring a generic type constraint. However, we can work around this issue by using Foo and Bar in a ...