合并两个相同类型的可观察对象将导致“未知”类型

时间:2019-07-18 14:46:53

标签: typescript rxjs

我正在尝试创建一个函数,该函数返回数组类型为Sub test() Dim c As Long With Sheet1 c = .Cells(5, Columns.Count).End(xlToLeft).Column 'returns 3 if last column is C With Range(.Cells(5, c), .Cells(14, c)) .Copy .Offset(, 1) End With End With End Sub 的可观察数组和可选的附加元素(如果提供)

Timeformat

但是,systemFormats: Timeformat[] = [ new Timeformat('d/b/Y:T', "%d/%b/%Y:%T"), new Timeformat('Y-m-d T', "%Y-%m-%d %T"), new Timeformat('d.m.Y', "%d.%m.%Y"), ]; public getSystemFormats$(): Observable<Timeformat> { return from(this.systemFormats); } public getCandidates$(customFormat?: Timeformat) { return merge(this.getSystemFormats$, from([customFormat])) .pipe( map(f => { console.log(f.label); }) ) } 似乎返回了错误的类型,因为出现以下错误:

  

“未知”类型不存在属性“标签”

我尝试了几种不同的方法将合并结果转换为Observable.merge,但这无济于事。

1 个答案:

答案 0 :(得分:1)

问题出在参数customFormat?

public getCandidates$(customFormat?: Timeformat) {    
   return merge(this.getSystemFormats$, from([customFormat]))
     .pipe(
      map(f => {    
        console.log(f.label);
      })          
    )
  }

通过添加问号,结果为customFormat或为空,这将使您无法输入。

尝试一下:

     .pipe(
       filter(Boolean),
       map(f: customFormat => {    
        console.log(f.label);
      })

或者,如果您真的不需要它,请从参数中删除?