問題 & 回答
type-challenges/README.md at main · type-challenges/type-challenges
- 組み込みのユーティリティ型
Readonlyを使用しないで、Tのすべてのプロパティを読み取り専用にする
interface Todo { title: string description: string}
const todo: MyReadonly<Todo> = { title: "Hey", description: "foobar"}
todo.title = "Hello" // Error: cannot reassign a readonly propertytodo.description = "barFoo" // Error: cannot reassign a readonly propertymapped typeを利用して、Tをすべて読み取り専用にします。
type MyReadonly<T> = { readonly [K in keyof T]: T[K] }調べたこと
readonly修飾子
- オブジェクトのフィールドを読み取り専用に指定するための修飾子
Readonly型
Readonly<T>は、オブジェクト型Tのプロパティをすべて読み取り専用にするユーティリティ型。挙動は今回実装したMyReadonly<T>と同じ- 参考:TypeScript: Documentation - Utility Types
感想
今日は昨日の発展系だったので、自力で解けました! TypeScript初めて数日の身からすると、まずは型の見た目に拒絶反応を起こさないようにすることが大切なので、このtypechallengesはいいですね〜。明日も頑張ります。