😽

2日目:type-challenges ~Readonly~

に公開

Type Challenges で型を勉強していきます。2 日目。
Readonly の問題に挑戦。

解答

type MyReadonly<T> = {
  readonly [K in keyof T]: T[K];
};
  • keyof T: オブジェクト型 T のすべてのキーを union 型にする(例: "title" | "description" | "completed"
  • [K in keyof T]: そのキーをループして新しいオブジェクト型を作る(Mapped Types)
  • readonly: プロパティを読み取り専用にする
  • T[K]: 元の T からプロパティ K の型を取り出す(インデックス型アクセス)

Discussion