Readonly
課題
組み込みの Readonly<T>
を使用せず、与えられた T
のすべてのプロパティを
readonly
とするような型、すなわち、すべてのプロパティを再割り当て不能とするよ
うな型を実装してください。
例:
interface Todo {
title: string;
description: string;
}
const todo: MyReadonly<Todo> = {
title: "Hey",
description: "foobar",
};
todo.title = "Hello"; // Error: cannot reassign a readonly property
todo.description = "barFoo"; // Error: cannot reassign a readonly property
解答
オブジェクトのすべてのプロパティを読み取り専用とする必要があります。つまり、すべ てのプロパティについて走査し、修飾子を付加する必要があります。
ここでは
Mapped 型を
使用するだけであり、それほど難しくはありません。与えられた型の各プロパティについ
て、そのキーを取り出し、readonly
修飾子を付加します:
type MyReadonly<T> = { readonly [K in keyof T]: T[K] };
コメント