Я не совсем понял общий смысл вашей конструкции, поэтому для наглядности, реализовал это в форме перечисления + тип + функция:
const Names = {
Bob: 'bob',
Alice: 'alice',
// Mike: 'mike',
} as const;
type Name = typeof Names[keyof typeof Names];
function fn(name: Name): boolean {
let access: boolean;
switch (name) {
case Names.Bob:
access = true;
break;
case Names.Alice:
access = false;
break;
default:
const check: never = name;
throw new Error(`Ошибка, пришло ${ check }`);
}
return access;
}
console.log(fn(Names.Bob)); // true
Если в names добавить еще одно значение, например mike, и не обработать его в switch, то check сразу засветиться красным с ошибкой:
TS2322: Type 'mike' is not assignable to type never