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

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

type MyReadonly<T> = {
  readonly [P in keyof T]: T[P]
}

MyReadonlyは、Tの全てのプロパティにreadonly修飾子を付けた新しい型を作成します。[P in keyof T]は、Tのプロパティに対応するプロパティを繰り返し処理します。readonly修飾子は、プロパティが読み取り専用であることを示します。元の型情報はそのまま保持されており、プロパティの型、オプション等はそのままコピーされます。