どういうことかと言われると、こんな感じ。
- ある関数 A はパラメータに指定された文字列によって返すクラスが異なる
- 上記関数 A を良い感じに型付けしたい
自分にはこんな感じの型定義しか思いつかなかった。
class ClassA { ... } class ClassB { ... } type Container = { ClassA: ClassA; ClassB: ClassB; } declare function inject<T extends keyof Container>(name: T): Container[T];
これで、こんな感じで型を得ることが出来る。
ということでメモでした。