Home > Mobile >  How can I defined the type of a dictionary whose keys are **some** of the values of union literal ty
How can I defined the type of a dictionary whose keys are **some** of the values of union literal ty

Time:04-08

In type script I have a union literal type defined as

export type Color =
  | 'red'
  | 'green'
  | 'blue'
  | 'teal'
  | 'purple'

How can I defined the type of a dictionary whose keys are some of the values of Color and the keys as string?

For instance:

const COLOR_MAP = {
  red: 'Cool',
  aree: 'Not so cool'
}

How can I typize COLOR_MAP so that I can access its set values with a string whose type is Color?

CodePudding user response:

Use Record<Color, string> or { [key in Color]: string } for an exhaustive map.

Use Partial<Record<Color, string>> or { [key in Color]?: string } for a non-exhaustive map.

If you want some specific subset of the union that is known at compile-time you can use Extract:

Record<Extract<Color, 'red' | 'teal'>, string>
  • Related