ウェブサイト検索

TypeScriptでジェネリック型の内部型を取得する


TypeScriptでジェネリック型の内部型を取得するにはどうすればいいですか?つまり、myType<T>のTです。

例えば:

export class MyClass {
  myMethod(): Observable<{ prop1: string, ... }> {
    ....
  }
}

type myClassReturn = ReturnType<MyClass['myMethod']>;
// Sets the type to 'Observable<{ prop1: string, ... }>'. 
// How do I set this to just '{ prop1: string, ... }'?

ありがとう

回答 #1

ジェネリック型から型パラメータを取得するために、infer キーワードを使用することができます。例えば:

type GetInsideObservable<X> = X extends Observable<infer I> ? I : never;

// in your case it would be:
type A = GetInsideObservable<ReturnType<MyClass['myMethod']>> // { prop1: string, ... }

関連記事