Multiple types in generic type constraints

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 ...

Get Learning TypeScript 2.x - Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.