MST

星途 面试题库

面试题:TypeScript中类装饰器在数据验证场景的实现

假设你有一个用户注册的类,类中有用户名、密码等属性。请使用TypeScript类装饰器实现一个数据验证功能,确保用户名长度在3到20个字符之间,密码长度至少为6个字符。
11.1万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function validateUser(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
    const originalMethod = descriptor.value;
    descriptor.value = function (...args: any[]) {
        const [username, password] = args;
        if (username.length < 3 || username.length > 20) {
            throw new Error('用户名长度必须在3到20个字符之间');
        }
        if (password.length < 6) {
            throw new Error('密码长度至少为6个字符');
        }
        return originalMethod.apply(this, args);
    };
    return descriptor;
}

class UserRegistration {
    @validateUser
    register(username: string, password: string) {
        console.log(`用户 ${username} 注册成功`);
    }
}

// 测试
const userReg = new UserRegistration();
try {
    userReg.register('test', '123456');
} catch (error) {
    console.error(error.message);
}