/** * Utility functions for enums. */ /** * Helper function to detect unhandled enum fields in `switch` statements at compile time. In case this function * is called at runtime anyway (which should not happen) it throws a runtime error. * * In the example below the compiler will complain if not for all fields of `Enum` a corresponding `case` statement * exists. * * @param field - Unhandled field, the value being switched over. * @throws {@link Error} - If the function is called at runtime. * * @example * switch (enumValue) { * case Enum.FIELD1: * return; * case Enum.FIELD2: * return; * * ... * * default: * return unhandledEnumField(enumValue); * } */ export function unhandledEnumField(field: never): never { throw new Error(`Unhandled enum field: ${field}`); }