📅  最后修改于: 2023-12-03 15:35:51.390000             🧑  作者: Mango
当在 TypeScript 中使用可观察对象进行订阅时,可能会出现下面的编译错误:
'“可观察”类型上不存在属性“取消订阅”<Object>'
这通常是因为你尝试在订阅一个可观察对象之后取消订阅该对象,但是该对象并没有实现 unsubscribe
方法。
在 RxJS 中,订阅时返回的对象实际上是一个 Subscription
对象,而不是可观察对象本身。因此,如果要取消订阅,则需要调用 unsubscribe
方法。
下面是一个示例:
import { Observable, Subscription } from 'rxjs';
const observable = new Observable(subscriber => {
const timerId = setInterval(() => {
subscriber.next('Hello World!');
}, 1000);
return new Subscription(() => {
clearInterval(timerId);
console.log('Unsubscribed!');
});
});
const subscription = observable.subscribe(console.log);
setTimeout(() => {
subscription.unsubscribe();
}, 5000);
在这个示例中,我们创建了一个可观察对象 observable
,它每隔一秒钟会向订阅者发送一条消息。在创建可观察对象时,我们返回了一个 Subscription
对象,它会在取消订阅时释放定时器资源,并输出一条日志以确认该对象已经被取消订阅。最后,在订阅可观察对象后,我们设置了一个 5 秒钟的定时器,并在其中调用了 unsubscribe
方法来取消订阅。
如果你仍然遇到了 '“可观察”类型上不存在属性“取消订阅”