Open1

UnionからオブジェクトリテラルのEnumを安全に定義する方法

Nakano as a ServiceNakano as a Service

コード生成などでEnumの型がUnionで与えられた時、それに基づくオブジェクトリテラルを作成する。

type FooBar = 'Foo' | 'Bar';

const FooBarEnum: { readonly [X in FooBar]: X } = {
  Foo: 'Foo',
  Bar: 'Bar',
} as const;

const FooBarEnum2 = {
  Foo: 'Foo',
  Bar: 'Bar',
} as const satisfies { [X in FooBar]: X };