matsutoba’s blog

フロントエンドエンジニアをしています

関数の引数の型に定数オブジェクトの値の型を使いたい

定数オブジェクトのValueの値のユニオンタイプを作って関数の引数の型指定として使いたいときのメモ。

Foo型のキーのユニオンタイプを作ってから、値のユニオンタイプ作れば良い。

const Foo = {
    FIRST: 1,
    SECOND: 2,
    THIRD: 3
} as const;

type FooKeysType = keyof typeof Foo;    // "FIRST"|"SECOND"|"THIRD"
type FooValuesType = typeof Foo[FooKeysType]    // 1|2|3

const Func = (param:FooValuesType): void => {
    console.log(param)
}

Func(1)     // 1
//Func(4);    // Error