gpt4 book ai didi

javascript - 无法调用其类型缺少调用签名的表达式。类型没有兼容的调用签名 2349

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:15 24 4
gpt4 key购买 nike

尝试在我的服务中调用 getter 和 setter 并收到错误:无法调用类型缺少调用签名的表达式。 “ bool ”类型没有兼容的调用签名 2349

toggleNav(): void {
this.sidebarService.sidebarStatus.pipe(
concatMap((bool: boolean) => this.sidebarService.updateStatus(bool))
);
}

在阅读了几个有关此的 SO 页面后,我还没有阅读一个简单的答案。有人可以用简单的英语解释这个错误的含义吗?

这里是 setter 和 getter:

private _sidebarStatus = new BehaviorSubject<boolean>(true);

public get sidebarStatus(): Observable<boolean> {
return this._sidebarStatus.asObservable();
}
public set updateStatus(bool: boolean) {
this._sidebarStatus.next(bool);
}

最佳答案

如果您要使用属性(如您使用 get/set 定义的那样),那么您只需在要设置属性时分配属性,调用到二传手将自动发生。

this.sidebarService.sidebarStatus.pipe(
concatMap((bool: boolean) => this.sidebarService.updateStatus = bool)
);

您得到的错误是因为编译器将 this.sidebarService.updateStatus 视为一个 bool 字段(它应该是,get/set 是一个实现细节,属性在语法上表现相同就像任何字段一样),因此您不能调用 bool 值。

您也可以删除 set,然后您可以调用 updateStatus,因为它只是一个常规方法而不是属性 setter :

public updateStatus(bool: boolean) {
this._sidebarStatus.next(bool);
}
this.sidebarService.sidebarStatus.pipe(
concatMap((bool: boolean) => this.sidebarService.updateStatus(bool)) // ok now
);

您可以阅读有关属性访问器的更多信息 here在访问器标题下

关于javascript - 无法调用其类型缺少调用签名的表达式。类型没有兼容的调用签名 2349,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54000020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com