Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
type ButtonType = 'primary' | 'secondary' | 'link';
// First we will define a Record indexed by ButtonType
//
// Record type is smart enough to spot if we miss a ButtonType
// in its definition, if we leave e.g. the 'link', we will get an error
const butonTypesMap: Record<ButtonType, true> = {
primary: true,
secondary: true,
link: true
};
// Then we take all the keys of our map and cast them to ButtonType
const buttonTypes: ButtonType[] = Object.keys(buttonTypeMap) as ButtonType[];
// This hack will only work for string union types though.
// It will not save you any typing and maybe even more importantly
// will intoduce type casting and an extra const.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.