オブジェクトから型を作る
ジャンケンオブジェクト
const hands = {
gu: "グー",
choki: "チョキ",
pa: "パー"
}
as const をつけることで読み取り専用になる
const hands = {
gu: "グー",
choki: "チョキ",
pa: "パー"
} as const;
中身
const hands: {
readonly gu: "グー";
readonly choki: "チョキ";
readonly pa: "パー";
}
ベタ書きで union型 をつくるなら
type Hand = "グー" | "チョキ" | "パー";
typeofで型情報を見る
type Hoge = typeof hands;
中身
const hands: {
readonly gu: "グー";
readonly choki: "チョキ";
readonly pa: "パー";
}
keyofで、key名からunion型を定義する
type Keys = keyof Hoge;
Keysの中身
type Keys = "gu" | "choki" | "pa"
typeofで型情報を見る。typeofとhandsのグーでつくる
type Hand = typeof hands["gu"];
中身
type Hand = "グー"
typeofとKeysを使って型情報を見る
type Hand = typeof hands[Keys];
中身
type Hand = "グー" | "チョキ" | "パー"
一気にオブジェクトの値のunion型を生成する
type Hand = typeof hands[keyof typeof hands];
中身
type Hand = "グー" | "チョキ" | "パー"
参考サイトというかぱくり
https://qiita.com/Yametaro/items/f8f9023c5e14c9a1e375