我正在使用在节点10上运行的用Typescript 3.9.7编写的API。我删除了不必要的细节,但基本上是在执行以下操作:
我正在尝试使用接口来增加某种类型的安全性,但是由于TS编译器给了我一些错误,我似乎在滥用它们。有关如何解决此问题的建议会有所帮助。
我已经精简了其他细节,但这是我获取用户数据并添加状态字段的方法:
public async getUsers(
parameter: string
): Promise<AugmentedUser[]> {
//return an array of User objects based on some parameter
const userData = await this.userService.getAll<User>(parameter);
return userData.forEach((userRow: User) => {
userRow.state = "inactive";
});
}
我的界面是
export interface User {
id: number;
firstName: string;
//some other fields
}
export interface AugmentedUser extends User {
state: string;
}
我从编译器中收到以下错误:
error TS2322: Type 'UserData[]' is not assignable to type 'AugmentedUser[]'. Property 'state' is missing in type 'User' but required in type 'AugmentedUser'.
我在做什么错?我在state
循环中添加了forEach
字段,所以为什么会出现此错误?谢谢。
答案 0 :(得分:1)
forEach不返回任何内容。试试地图功能:
return userData.map((userRow: User) => {
return {...userRow, state: 'inactive'};
});
这将生成具有所有用户属性以及AugmentedUser中存在的状态的对象列表。