Skip to content

Commit c477ee1

Browse files
committed
02 ex. Convert Action to generic
1 parent 69b64af commit c477ee1

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

exercises/02-roleBasedAccess.code.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
const userAccessModel = {
2-
user: ["update-self", "view"],
3-
admin: ["create", "update-self", "update-any", "delete", "view"],
4-
anonymous: ["view"],
5-
} as const;
2+
user: ["update-self", "view"],
3+
admin: ["create", "update-self", "update-any", "delete", "view"],
4+
anonymous: ["view"],
5+
} as const
66

7-
export type Role = keyof typeof userAccessModel;
8-
export type Action = typeof userAccessModel[Role][number];
7+
export type Role = keyof typeof userAccessModel
8+
export type Action<R extends Role> = typeof userAccessModel[R][number]
99

10-
export const canUserAccess = (role: Role, action: Action) => {
11-
return (userAccessModel[role] as ReadonlyArray<Action>).includes(action);
12-
};
10+
export const canUserAccess = <R extends Role>(role: R, action: Action<R>) => {
11+
return (userAccessModel[role] as ReadonlyArray<Action<R>>).includes(action)
12+
}

0 commit comments

Comments
 (0)