gpt4 book ai didi

angular - TypeScript 模块扩充

转载 作者:太空狗 更新时间:2023-10-29 17:31:57 25 4
gpt4 key购买 nike

我有可观察的扩展。它工作得很好,但现在我已经使用 typescript 2.7.2 更新到 angular 6。

import { Observable } from 'rxjs/Observable';
import { BaseComponent } from './base-component';
import { Subscription } from 'rxjs/Subscription';
import { Subscribable } from 'rxjs';

declare module 'rxjs/Observable' {
export interface Observable<T> {
safeSubscribe<T>(this: Observable<T>, component: BaseComponent,
next?: (value: T) => void, error?: (error: T) => void, complete?: () => void): Subscription;
}
}


export function safeSubscribe<T>(this: Observable<T>, component: BaseComponent,
next?: (value: T) => void, error?: (error: T) => void, complete?: () => void): Subscription {
let sub = this.subscribe(next, error, complete);
component.markForSafeDelete(sub);
return sub;
}

Observable.prototype.safeSubscribe = safeSubscribe;

这段代码不工作

  1. 'Observable' 仅指类型,但在这里用作值。
  2. 属性“subscribe”在“Observable”类型上不存在。

https://www.typescriptlang.org/docs/handbook/declaration-merging.html

最佳答案

合并声明时,指定的模块路径必须与实际模块的路径完全匹配。

对于 RxJS 版本 6,您需要更改模块声明,因为内部结构已更改。从内存中应该是:

declare module 'rxjs/internal/Observable' {
export interface Observable<T> {
safeSubscribe<T>(this: Observable<T>, component: BaseComponent,
next?: (value: T) => void, error?: (error: T) => void, complete?: () => void): Subscription;
}
}

有关示例,请参阅 one of the patching importsrxjs-compat 中。

关于angular - TypeScript 模块扩充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50321926/

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