Avatar ·

TypeScript: 处理对象时出现 "Type 'string' is not assignable to type" 错误

你好!我开始学习 TypeScript 并遇到了一个奇怪的错误。我有一个描述用户的 interface: ```typescript interface User { name: string; age: number; role: 'admin' | 'user'; } ``` 我试图创建一个函数,它接受一个角色字符串并返回一个用户对象: ```typescript function createUser(name: string, age: number, role: string): User { return { name, age, role }; } ``` 但 TypeScript 在 `role` 处报错:"Type 'string' is not assignable to type '"admin" | "user"'"。我不明白为什么会这样。毕竟 `role` 是一个字符串,我传递的字符串应该符合类型 `'admin' | 'user'`。在 JavaScript 中这本来可以正常工作。 我尝试过显式转换类型:`role as 'admin' | 'user'`,但这看起来像是一个临时解决方案。有没有正确的方法来解决这个问题?也许我设计 interface 的方式不对?希望能得到详细的解释。 <<>>

错误原因:TypeScript 保护