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 的方式不对?希望能得到详细的解释。
<<>>