Skip to content

Instantly share code, notes, and snippets.

@termi
Last active November 10, 2025 13:16
Show Gist options
  • Select an option

  • Save termi/e047e45bdd75603c8a782f98a634e822 to your computer and use it in GitHub Desktop.

Select an option

Save termi/e047e45bdd75603c8a782f98a634e822 to your computer and use it in GitHub Desktop.
TypeScript: Function return bitwise flags example
// After TypeScript compiling
export function checkUserAccess(user) {
if (!user) {
return 0;
}
const { roles = [] } = user;
return (0
| (roles.includes(1 /* checkUserAccess.UserRoles.Admin */) ? 1 /* checkUserAccess.ResultFlags.isAdmin */ : 0)
| (roles.includes(10 /* checkUserAccess.UserRoles.TestUser */) ? 2 /* checkUserAccess.ResultFlags.isTestUser */ : 0)
| (roles.includes(11 /* checkUserAccess.UserRoles.ExperimentUser */) ? 4 /* checkUserAccess.ResultFlags.isExperiment */ : 0)
| (roles.includes(101 /* checkUserAccess.UserRoles.WithFeature1 */) ? 2048 /* checkUserAccess.ResultFlags.hasAceessToFeature1 */ : 0)
| (roles.includes(102 /* checkUserAccess.UserRoles.WithFeature2 */) ? 4096 /* checkUserAccess.ResultFlags.hasAceessToFeature2 */ : 0)
| (roles.includes(103 /* checkUserAccess.UserRoles.WithFeature3 */) ? 8192 /* checkUserAccess.ResultFlags.hasAceessToFeature3 */ : 0));
}
const someUser = (globalThis["__currentUser"] || null);
const userAccess = checkUserAccess(someUser);
if ((userAccess & 1 /* checkUserAccess.ResultFlags.isAdmin */) !== 0) {
console.log('This user is admin:', someUser);
}
// After terser with pretty
export function checkUserAccess(s) {
if (!s) {
return 0;
}
const { roles: e = [] } = s;
return (e.includes(1) ? 1 : 0) | (e.includes(10) ? 2 : 0) | (e.includes(11) ? 4 : 0) | (e.includes(101)
? 2048
: 0) | (e.includes(102) ? 4096 : 0) | (e.includes(103) ? 8192 : 0);
}
const s = globalThis.__currentUser || null;
1 & checkUserAccess(s) && console.log("This user is admin:", s);
export function checkUserAccess(user: checkUserAccess.UserInfo | null) {
if (!user) {
return 0;
}
const { roles = [] } = user;
return (0
| (roles.includes(checkUserAccess.UserRoles.Admin) ? checkUserAccess.ResultFlags.isAdmin : 0)
| (roles.includes(checkUserAccess.UserRoles.TestUser) ? checkUserAccess.ResultFlags.isTestUser : 0)
| (roles.includes(checkUserAccess.UserRoles.ExperimentUser) ? checkUserAccess.ResultFlags.isExperiment : 0)
| (roles.includes(checkUserAccess.UserRoles.WithFeature1) ? checkUserAccess.ResultFlags.hasAceessToFeature1 : 0)
| (roles.includes(checkUserAccess.UserRoles.WithFeature2) ? checkUserAccess.ResultFlags.hasAceessToFeature2 : 0)
| (roles.includes(checkUserAccess.UserRoles.WithFeature3) ? checkUserAccess.ResultFlags.hasAceessToFeature3 : 0)
);
}
export namespace checkUserAccess {
export type UserInfo = {
roles?: UserRoles[],
};
export const enum UserRoles {
Admin = 1,
TestUser = 10,
ExperimentUser = 11,
WithFeature1 = 101,
WithFeature2 = 102,
WithFeature3 = 103,
}
export const enum ResultFlags {
isAdmin = 1 << 0,
isTestUser = 1 << 1,
isExperiment = 1 << 2,
hasAceessToFeature1 = 1 << 11,
hasAceessToFeature2 = 1 << 12,
hasAceessToFeature3 = 1 << 13,
}
}
const someUser = ((globalThis as unknown as { __currentUser?: checkUserAccess.UserInfo | null })["__currentUser"] || null) as (checkUserAccess.UserInfo | null);
const userAccess = checkUserAccess(someUser);
if ((userAccess & checkUserAccess.ResultFlags.isAdmin) !== 0) {
console.log('This user is admin:', someUser);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment