Closed6
type-challenges やったメモ
type-challengesをやっていく
type-chalengesをやった際のメモを残していきます。
4 - Pick
Mapped Types
{ [K in T]: S }
Tに含まれるオブジェクトをKで取り出してSの型とする。
extends keyof T
type MyPick<T, K extends keyof T> = { [Key in K]: T[Key] }
invalidを省くために、Tの型のどれかであるという制約をつける。
参考
7- Readonly
readonly で読み込み専用
type MyReadonly<T> = { readonly T }
Mapped TypesでT内のオブジェクトを取り出す
type MyReadonly<T> = { readonly [ Key in T]: T[Key] }
keyof で型を取り出す
type MyReadonly<T> = { readonly [ Key in keyof T]: T[Key] }
9 - Tuple to Object
PropertyKey
Tの型が文字列か数字か記号かを、組み込み型のPropertyKeyを使ってチェックできる。
Mapped type
[ P in T] でTの要素を取り出せる。
ここで、T[number]とすることで配列であるTの型(string | number | Symbol)を取り出すことが出来る。
type TupleToObject<T extends readonly PropertyKey[]> = { [P in T[number]]: P }
参考
15 - Length of Tuple
tupleなのでreadonlyを使う
どんな型の配列でも良いので、any[]
を使い、
type Length<T extends readonly any[]> = any
そして、型の長さにアクセスする。
type Length<T extends readonly any[]> = T['length']
参考
このスクラップは3ヶ月前にクローズされました