【发布时间】:2020-12-02 18:32:02
【问题描述】:
我正在尝试做一些 Trello 自动化,所以我正在调用 API 来创建一个返回 ID 的列表。然后,如果我指定了卡名,我需要使用列表 ID 并行进行另一组调用。无论我是否创建卡片,我都想返回创建的列表的 ID。
编译器不喜欢我在 iif 调用中所做的事情,说:
TS2345:“Observable
”类型的参数不可分配给“(值:HasId,索引:数字)=> ObservableInput”类型的参数。类型 'Observable ' 不匹配签名 '(value: HasId, index: number): ObservableInput'。
我不确定它为什么要分配给(value: HasId, index: number) => ObservableInput<any>,所以我不知道如何解决。
这是我尝试使用的代码。
interface HasId {
id: string
}
private createCard(idList: string, name: string): Observable<string> { ... }
private createList(boardId: string, name: string, cards?: string[]): Observable<string> {
let idList = ''
return this.http.post<HasId>(`boards/${boardId}/lists`, null, {params: {name}})
.pipe(
tap(x => idList = x.id),
mergeMap(
iif(
() => cards,
forkJoin(cards.map(name => this.createCard(idList, name)))
)),
map(() => idList)
)
}
【问题讨论】: