MST

星途 面试题库

面试题:TypeScript装饰器实现简单权限验证

请使用TypeScript装饰器实现一个简单的函数权限验证。假设存在两种权限:'admin'和'user',只有具有'admin'权限的用户才能调用被装饰的函数。请编写代码实现该功能,并展示如何调用这个装饰后的函数。
21.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 定义权限验证装饰器
function checkPermission(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
    const originalMethod = descriptor.value;
    descriptor.value = function(...args: any[]) {
        // 假设这里通过某种方式获取当前用户权限,这里简单模拟为一个变量
        const currentUserRole = 'admin'; 
        if (currentUserRole === 'admin') {
            return originalMethod.apply(this, args);
        } else {
            console.log('没有权限调用此函数');
        }
    };
    return descriptor;
}

// 被装饰的函数
class MyClass {
    @checkPermission
    myFunction() {
        console.log('执行函数');
    }
}

// 调用装饰后的函数
const myObj = new MyClass();
myObj.myFunction();