この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - TypeScript タイプパズル
11. ConstructorParameters<T> を実装する

解答例:

type MyConstructorParameters<T extends new (...args: any) => any> =
  T extends new (...args: infer P) => any ? P : never;

説明:

MyConstructorParameters<T> は、型引数Tが「new (...args:any) => any」のサブタイプであるという制約付きジェネリック型です。つまり、Tはconstruct signature (constructor function) を持ち、戻り値は何でもよいようにするためです。ここで、 ...args は可変長引数です。また、Pはtuple typeであり、引数の型を含むようにするためです。

条件記法を使用して、型パラメータTが述語「new (...args:any) => any」を満たす場合、Pを引数のtuple typeに割り当てます。

例えば、 MyConstructorParameters<typeof Foo> は、型TをFooの型に設定し、上記の型定義で置き換えた結果として [string, number, boolean] となります。