TypeScript オブジェクトからオブジェクトの値のunion型をつくる

Table of Contents

オブジェクトから型を作る

ジャンケンオブジェクト

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 = "グー" | "チョキ" | "パー"

参考サイトというかぱくり

4歳娘「パパ、オブジェクトから型を作って?」 - Qiita
ある休日娘(4歳)「パパ、ジャンケンしよ!?」ワイ「おお、娘ちゃん」ワイ「もうジャンケンができるようになったんか!」ワイ「まだ関数を書くことくらいしかできんと思ってたわ〜」よめ太郎「順番ど…
タイトルとURLをコピーしました