Open5
type-challengesをやってみる
これをゆるりとすすめてみる
Hello World
回答
type HelloWorld = string
【初級】 Pick
お題
組み込みの型ユーティリティPick<T, K>
を使用せず、T
からK
のプロパティを抽出する型を実装します。
回答
type MyPick<T, K extends keyof T> = {
[key in K]: T[key]
}
調べた事
Lookup Types T[K]
Kがプロパティ名の型であるとき、T[K]はTのそのプロパティの型となる
この問題でいうと、 KがTのプロパティ
である事が重要で 指定しない・・例えば以下のように書くとエラーになる
type MyPick<T, K> = {
[key in K]: T[key]
}
Type 'key' cannot be used to index type 'T'
【初級】 ReadOnly
お題
組み込みの型ユーティリティReadonly<T>を使用せず、T のすべてのプロパティを読み取り専用にする型を実装します。実装された型のプロパティは再割り当てできません。
回答
type MyReadonly<T> = {
readonly [key in keyof T]: T[key];
}
やったぜ、一発正解
補足とか
Readonly
型T を取って、そのプロパティをすべて readonly としてマークする
【初級】 Tuple to Object
お題
タプルを受け取り、その各値のkey/valueを持つオブジェクトの型に変換する型を実装します。
回答
type TupleToObject<T extends readonly string[]> = {
[key in T[number]]: key
}
わからず・・・!!
補足とか
これを読むべし