Javascript TS2345:参数 ;of ;类型 ';() =&燃气轮机;棱角分明
如何解决此问题:Javascript TS2345:参数 ;of ;类型 ';() =&燃气轮机;棱角分明,javascript,angular,typescript,Javascript,Angular,Typescript,如何解决此问题: TS2345: Argument of type '() => Observable<R | undefined>' is not assignable to parameter of type '() => void | Subscribable<never> | Subscribable<R> | PromiseLike<R> | InteropObservable<R>'. Type 'Obser
TS2345: Argument of type '() => Observable<R | undefined>' is not assignable to parameter of type '() => void | Subscribable<never> | Subscribable<R> | PromiseLike<R> | InteropObservable<R>'. Type 'Observable<R | undefined>' is not assignable to type 'void | Subscribable<never> | Subscribable<R> | PromiseLike<R> | InteropObservable<R>'. Type 'Observable<R | undefined>' is not assignable to type 'InteropObservable<R>'. Property '[Symbol.observable]' is missing in type 'Observable<R| undefined>
使用Angular
6.1.3
确定,因此我找到了解决方案:
public open<T, D, R>(
templateOrComponentRef: TemplateRef<T> | ComponentType<T>,
config: MatDialogConfig<D>,
): Observable<R | undefined> {
const ref = this.create<T, D, R>(templateOrComponentRef, config);
return ref.afterClosed();
}
公开(
templateOrComponentRef:TemplateRef | ComponentType,
config:MatDialogConfig,
):可见{
const ref=this.create(templateOrComponentRef,config);
返回参考afterClosed();
}
如您所见,我删除了
defer()
,以匹配返回类型。因为一次只能打开一个对话框,所以这应该是正常的。乍一看,ref.afterClosed()
的返回类型似乎与预期的类型不匹配()=>void | Subscribable | Subscribable | PromiseLike | interopobbservable'
您不应返回可能是void
或Subscribable
或PromiseLike
的内容,或者InteropObservable
相反,您应该返回类型可能为Observable
或Observable
的结果。这就是错误消息的意思。我想,您如何解决它取决于您的应用程序。谢谢,但错误一点也不明确,我根本看不出我的实现有什么问题。(是的,我以前在谷歌上搜索并访问过github,在这里没有帮助)谢谢,但错误一点也不明确
我以前从未见过,而且我很清楚我根本看不出我的实现有什么问题
您的函数返回一种类型的响应。它们与预期的不匹配,或者需要其他类型的响应,或者您需要以某种方式转换它们。在Java中,这相当于试图将某个List
传递给采用Set
或其他不兼容类型的方法。
public create<T, D, R>(
templateOrComponentRef: TemplateRef<T> | ComponentType<T>,
config: MatDialogConfig<D>,
): MatDialogRef<T, R> {
return this.dialog.open<T, D>(templateOrComponentRef, config);
}
public open<T, D, R>(
templateOrComponentRef: TemplateRef<T> | ComponentType<T>,
config: MatDialogConfig<D>,
): Observable<R | undefined> {
const ref = this.create<T, D, R>(templateOrComponentRef, config);
return ref.afterClosed();
}