Avatar ·

TypeScript错误:类型'string'不能赋值给类型——如何修复?

大家好!我刚开始学习TypeScript,遇到了一个令人困惑的错误。我有一个用户接口: ```typescript interface User { name: string; age: number; role: 'admin' | 'user'; } ``` 我尝试根据从表单获取的数据创建一个用户对象。数据以字符串形式传入(甚至年龄也是来自input的字符串)。我写了这样的代码: ```typescript const formData = { name: 'Иван', age: '25', // 字符串,但需要数字 role: 'admin' }; const user: User = { name: formData.name, age: formData.age, // 错误:类型'string'不能赋值给类型'number' role: formData.role // 错误:类型'string'不能赋值给类型'"admin" | "user"' }; ``` TypeScript对age和role报错。我明白age应该是数字,而role必须是严格意义上的'admin'或'user',但如何正确转换类型呢?我尝试过使用`as`——它可以工作,但我听说这是不好的实践。请告诉我如何优雅地解决这个问题。