Skip to content

Instantly share code, notes, and snippets.

@duggiemitchell
Last active June 30, 2022 17:43
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 duggiemitchell/81b508a98798d6f76f42d387570691a6 to your computer and use it in GitHub Desktop.
Save duggiemitchell/81b508a98798d6f76f42d387570691a6 to your computer and use it in GitHub Desktop.
Typscript UserAccessLevel
enum UserAccessLevel {
READ = 1,
READ_WRITE = 2,
ADMIN = 3,
CO_OWNER = 4,
}
type Foo = {
[key in UserAccessLevel]:
| 'Read-only'
| 'Read/Write'
| 'Administrator'
| 'Co-Owner';
};
type Bar = {
labelMap: Foo;
getLabel: (level: number) => string;
ordered: UserAccessLevel[];
};
const USER_ACCESS_LEVEL: Bar = {
labelMap: {
[UserAccessLevel.READ]: 'Read-only',
[UserAccessLevel.READ_WRITE]: 'Read/Write',
[UserAccessLevel.ADMIN]: 'Administrator',
[UserAccessLevel.CO_OWNER]: 'Co-Owner',
},
getLabel: level => USER_ACCESS_LEVEL.labelMap?.[level],
ordered: [
UserAccessLevel.READ,
UserAccessLevel.READ_WRITE,
UserAccessLevel.ADMIN,
UserAccessLevel.CO_OWNER,
],
};
export default Object.freeze(USER_ACCESS_LEVEL);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment