angular - 当源作为变量传递时,ForkJoin 抛出错误
问题描述
我已经forkjoin
实现如下:
getData() {
forkJoin({
a: of([1, 2, 3]),
b: of([4, 5, 6]),
c: of([7, 8, 9])
}).subscribe(r => {
console.log(r.a, r.b, r.c);
});
}
此代码有效,我可以在控制台上看到输出,但是如果我将源移动到变量,forkoin
则不再有效。
getData() {
const source = {
a: of([1, 2, 3]),
b: of([4, 5, 6]),
c: of([7, 8, 9])
};
forkJoin(source).subscribe(r => {
console.log(r.a, r.b, r.c);
});
}
它的抛出错误:
“从不”类型上不存在属性“a”。
为什么会发生这种情况以及如何解决?
StackBlitz 可以在这里找到
解决方案
找到答案,stackblitz 链接。第一个答案没有提到解决方案。你不能在forkJoin的尖括号中传递类型转换,你只需要在回调中添加类型。使用 typeof source 不定义新类型。将类型分配给源,也不将其设置为 const 提供了正确的类型定义。只在回调中给出一个类型似乎有效。
https://stackblitz.com/edit/so-question-forkjoin-so?file=src/app/app.component.ts
推荐阅读
- mysql - 如何编写查询以获取基于多个参数的路由 ID?
- time-complexity - 空嵌套循环的时间复杂度
- python - 绘制不同沙丘背风角的动画
- perl - 在 Perl 中向串口发送下划线
- phpmyadmin - 删除 phpMyAdmin 中的表而不访问其内容
- linux - Linux - 计算超过一行的文件数
- javascript - 为什么 javascript 在 Gatsby 项目中的页面更改时不会触发?
- ios - 停止后台获取任务 iOS
- typescript - 在这些情况下“K 不能用于索引类型”的原因
- python - 如何在另一个模块中访问 Tkinter 窗口?