// 自定义错误类
class LoginError extends Error {
constructor(message: string) {
super(message);
this.name = 'LoginError';
}
}
// 参数装饰器
function validateLogin(target: any, propertyKey: string, parameterIndex: number) {
return function (value: any) {
if (parameterIndex === 0 && value.length < 6) {
throw new LoginError('用户名长度小于6');
}
if (parameterIndex === 1 && value.length < 8) {
throw new LoginError('密码长度小于8');
}
return value;
};
}
class UserService {
login(
@validateLogin username: string,
@validateLogin password: string
) {
console.log(`用户名: ${username}, 密码: ${password}`);
// 这里可以写实际的登录逻辑
}
}
// 测试
try {
const userService = new UserService();
userService.login('user12', 'password12345678');
} catch (error) {
if (error instanceof LoginError) {
console.error(error.message);
} else {
console.error('其他错误:', error);
}
}