键入返回的可观察对象

Typing a returned observable

每当我尝试转译以下代码时,都会收到错误消息:

TypeScript error: /Users/development/Desktop/Source/MyApp/MyApp/app/providers/register-service/register-service.ts(30,12): Error TS2322: Type 'Observable<{}>' is not assignable to type 'Observable<string>'.
  Type '{}' is not assignable to type 'string'.

但是我看不出我的代码有任何(显然)错误:

getRegisteredName(): Observable<string> {
    return new Observable(observer => {
        let registeredName: string = localStorage.getItem('RegisteredName');

        if (registeredName) {
            observer.next(registeredName);

            observer.complete();
        }
        else {
            observer.error(null);
        }
    });
}

为什么 TypeScript 转译器拒绝这个函数?

您已指定要访问的 Observable 类型 return:

Observable<string>

但是此时 TS 并不知道你真正在说什么 return。您必须通过以下方式将其告诉 TS 编译器:

return new Observable<string>