1. ホーム
  2. typescript

[解決済み] TypeScript Genericsに複数の型制約を指定することは可能か?

2022-11-24 05:12:20

質問

この例のような、単一の型制約を持つジェネリック・インターフェイスを持っています。

export interface IExample<T extends MyClass> {
    getById(id: number): T;
}

型制約を1つだけでなく、複数指定することは可能でしょうか?

どのように解決するのですか?

Typescript は一般的な型に対して多重継承を行うための構文を提供しません。しかし、Union 型と Intersection 型を使用することで、同様のセマンティクスを実現することができます。あなたの場合は、交差点が欲しいのですね。

interface Example<T extends MyClass & OtherClass> {}

両タイプのユニオンの場合.

interface Example<T extends MyClass | OtherClass> {}