小编phi*_*2mj的帖子

为什么 Typescript 无法推断 RxJs 流中的元组返回类型?

在组合可观察流时,从映射函数返回的元组被编译器推断为联合而不是元组。

例如:

import { Component } from '@angular/core';
import { from } from 'rxjs';
import { map, tap } from 'rxjs/operators';

export class MyType {
  constructor(private name: string) {}
}

@Component({
  selector: 'my-app',
  template: ''
})
export class AppComponent {
  observable$ = from([new MyType('obj1'), new MyType('obj2')]).pipe(
    map((value, index) => [value, index]),
    tap(([value, index]) => console.log(value, index))
  ).subscribe();
}
Run Code Online (Sandbox Code Playgroud)

在stackblitz上查看一下,如果您将鼠标悬停在 中 的函数参数上value或中,它们都会被推断出何时应该理解和。indextapnumber | MyTypevalue: MyTypeindex: number

如果我通过填写泛型来注释地图:map<MyType, [MyType, number]>(...那么输入是正确的。

这是预期的行为吗?打字稿不应该理解该元组而不必显式传递类型吗?

我在本地使用 …

generics types rxjs typescript angular

2
推荐指数
1
解决办法
530
查看次数

标签 统计

angular ×1

generics ×1

rxjs ×1

types ×1

typescript ×1