😎

Type Challengeに入門する

2022/12/11に公開

こんばんは。Type Challgeに入門する2日目です。本日の問題はReadonly<T>を自作するという問題です。
まず、Readonly<T>について復習します。

Readonly<T>は、オブジェクト型Tのプロパティをすべて読み取り専用にするユーティリティ型です。

https://typescriptbook.jp/reference/type-reuse/utility-types/readonly

typeChallenge.ts
type TypeA = ReadOnly<{ foo: string; bar: number }>
// ↑と↓は同じ
type TypeB = { readonly foo: string; readonly bar: number }

簡単に言えば全てのプロパティにreadonlyをつけるものです。全てのプロパティに処理を加えるのはMapped Typeですね。

MyReadOnly.ts
 type MyReadOnly<T> = { readonly[Key in T]: T[Key] }

今回は全てのプロパティにreadonlyをつけたいのでkeyの前にこれをおきます。これだけですね。
今日は簡単でした。明日も頑張ります。

Discussion