Angularfire2 项目有一个正在进行的分支,添加了一个存储功能。两个新文件包括一个 Observable 类和一个 Factory 函数。
可观察类
export class FirebaseUploadTaskObservable<T> extends Observable<T> {
constructor(
subscribe?: <R>(observer: Observer<R>) => Subscription | Function | void,
public uploadTask?:firebase.storage.UploadTask) {
super(subscribe);
}
lift<T, R>(operator: Operator<T, R>): Observable<R> {
const observable = new FirebaseUploadTaskObservable<R>();
observable.source = this;
observable.operator = operator;
observable.uploadTask = this.uploadTask;
return observable;
}
...
}
工厂功能
export function FirebaseUploadTaskFactory (uploadTask: UploadTask):
FirebaseUploadTaskObservable<UploadTaskSnapshot> {
const obsFunction = (obs: Observer<UploadTaskSnapshot>) => { ... };
const objectObservable = new FirebaseUploadTaskObservable(obsFunction, uploadTask);
...
}
简而言之,我得到的错误是:
类型“R”不可分配给类型“UploadTaskSnapshot”。
这个答案有助于强化我认为我已经知道<T>
的 Typescript 和泛型,但什么是<R>
?
(完整的错误信息)
'(obs: Observer) => void' 类型的参数不能分配给 '((observer: Observer) => void | Function | Subscription) | 类型的参数 不明确的'。类型 '(obs: Observer) => void' 不可分配给类型 '(observer: Observer) => void | 功能 | 订阅'。参数 'obs' 和 'observer' 的类型不兼容。类型“观察者”不可分配给类型“观察者”。类型“R”不可分配给类型“UploadTaskSnapshot”。