Open3

TSの型のメモ

UgoUgo

Tupleをオブジェクトに変換する

as constで定義されたものに対して

type Sample<T extends readonly any[]>

のように。extendsで制約をかけることで、配列の中の値が差割り当てできないことが前提。
readonlyをつけることで変更することができないことが前提とできる。
そのため、as constで指定した配列を受け取ることができる。

type TuppleToObject<T extends readonly any[]> = { [K in T[number]]: K }
UgoUgo

Pickの作成

以下で、KがTのkeyであるものに制約する

type MyPick<T, K extends keyof T> = {

以下で、TからKをピックアップしたものをkeyとし、valueをT[P]で取得する。

type MyPick<T, K extends keyof T> = {
  [P in K]: T[P]
}
UgoUgo

配列の最初を取得する

type First<T extends any[]> = T exetends [infer U, ...any[]] ? U : never