Skip to content

Instantly share code, notes, and snippets.

@gwpantazes
Last active September 9, 2020 21:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gwpantazes/fa641c39a75615ff2092fe4c8491e86f to your computer and use it in GitHub Desktop.
Save gwpantazes/fa641c39a75615ff2092fe4c8491e86f to your computer and use it in GitHub Desktop.
Function to get typesafe Typescript enum member array
export function getTypesafeEnumArray<T>(enumType: T): T[keyof T][] {
return Object.keys(enumType)
.filter((key) => isNaN(Number(enumType[key as keyof typeof enumType])))
.map((key) => enumType[key as keyof typeof enumType]);
}
enum OrdinalEnum {
ONE,
TWO
}
enum StringEnum {
A = 'HELLO',
B = 'WORLD'
}
enum HeterogeneousEnum {
Y = 1,
Z = 'OMEGA'
}
const ordinalMembers: OrdinalEnum[] = getTypesafeEnumArray(OrdinalEnum);
console.log(ordinalMembers);
// Output: ["ONE", "TWO"]
const stringMembers: StringEnum[] = getTypesafeEnumArray(StringEnum);
console.log(stringMembers);
// Output: ["HELLO", "WORLD"]
const heterogenousMembers: HeterogeneousEnum[] = getTypesafeEnumArray(HeterogeneousEnum);
console.log(heterogenousMembers);
// Output: ["Y", "OMEGA"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment