TypeScript登录验证函数报错Property 'email' does not exist on type '{}' 如何解决?
解决TypeScript登录验证函数的类型错误
在TypeScript中编写登录验证函数时,取消注释errors对象内的email: ''或password: ''行后,会触发TypeScript错误:Property 'email' does not exist on type '{}',同时email值会变为空字符串。
原代码如下:
export default function loginValidate(values: any) { let errors = { // email:'', //handling = Property 'email' does not exist on type '{}' // password: '', //handling = Property 'password' does not exist on type '{}' }; if (!values.email) { errors.email = 'Email Required'; } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(values.email)) { errors.email = 'Invalid email address'; } //Validation for password if (!values.password) { errors.password = 'Password Required'; } else if (values.password.length < 6 || values.password.length > 30) { errors.password = "Must be greater than 6 and less than 30 characters"; } else if (values.password.includes(" ")) { errors.password = "Invalid Password"; } return errors; }
修复方法
将声明errors的代码从let errors = {}修改为let errors: any = {},即可移除该类型错误。
如果希望更符合TypeScript的类型规范,也可以定义明确的错误类型接口,避免使用any:
interface LoginErrors { email?: string; password?: string; } export default function loginValidate(values: any) { let errors: LoginErrors = {}; // 后续验证逻辑保持不变 }
内容的提问来源于stack exchange,提问作者erwin
相关产品推荐
相关产品推荐

