如何在一个数组中组合两个基于ID的可观测值



由于其他帖子的帮助,我正在使用combineLatest将多个可观察到的结果添加到单个订阅中,取得了巨大成功,但无法找到这个问题的答案。

我正试图根据数组中的唯一id将一个可观察到的对象映射到另一个。所以我有两个API给出:

export interface user {
id: string,
name: string,
}

export interface rules {
id: string,
users: Array <{
string,
}>
}

我希望合并到:

export interface user {
id: string,
name: string,
rule_id: string,
}

或潜在的

export interface user {
id: string,
name: string,
rules: Array <{
string,
}>
}

下面是我当前的代码

const result$ = combineLatest([users$, rules$]).pipe(
map(([users, rules]) => {        
return users.map(user => {  
const rulesForUser = rules.filter(rules => rules.users.includes(user.id))
return {
...user,
rules: rulesForUser,        
}
})
})
);

并且有这个错误:

错误TS2345:类型为"string"的参数不可分配给类型为"never"的参数。

我现在意识到,多亏了Owen Kelvin,我不应该有"字符串";在预期数组中的我的类型中:

export interface user {
id: string,
name: string,
rules: Array <{
}>
}

我不会撒谎,不知道为什么,但非常感谢!!

最新更新