angular2流星离子-无法将名称空间Observable用作类型

时间:2018-09-24 00:58:40

标签: angular typescript meteor ionic2

我正在追踪this tutorial,并尽我所能避免讨厌棱角。本教程使用Typescript和Angular2和Ionic这3个我不完全了解的工具,但这就像...为什么我首先要做一个教程。我在Web开发方面的经验是使用Django 2.0,以及很多前端,所以我非常了解Javascript,但这使我感到困惑。

这是相关代码:

// chats.ts
import { Component } from '@angular/core';
import * as Moment from 'moment';
import { Observable } from 'rxjs/Observable';
import { Chat, MessageType } from '../../../../imports/models';

import template from './chats.html';

@Component({
    template
});

export class ChatsPage {
    chats: Observable<Chat[]>;

    constructor() {
        this.chats = this.findChats();
    }

    private findChats(): Observable<Chat[]> {
        return Observable.of([
            {
                _id: '0',
                title: 'Ethan Gonzalez',
                picture: 'https://randomuser.me/api/portraits/thumb/men/1.jpg',
                lastMessage: {
                  content: 'You on your way?',
                  createdAt: Moment().subtract(1, 'hours').toDate(),
                  type: MessageType.TEXT
                }
            },
     // dummy data here

第二个文件:

// app.components.ts

import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar, Splashscreen } from 'ionic-native';
import { ChatsPage } from '../pages/chats/chats';
import template from "./app.html";

@Component({
    template
});

export class MyApp {
    rootPage = ChatsPage;

    constructor(platform: Platform) {
        platform.ready().then(() => {
            if (platform.is('cordova')) {
                StatusBar.styleDefault();
                Splashscreen.hide();
            }
        });
    }
}

运行Meteor时出现以下错误:

client/imports/pages/chats/chats.ts (13, 12): Cannot use namespace 'Observable' as a type.
client/imports/pages/chats/chats.ts (19, 26): Cannot use namespace 'Observable' as a type.
client/imports/app/app.components.ts (14, 27): Cannot use namespace 'Platform' as a type.

2 个答案:

答案 0 :(得分:1)

此时FWIW:未安装node_modules时,我可以重现原始错误。甚至在我安装它们之后,它看起来像barbatus:typescript构建插件还是有错误的,并且不会使它的缓存无效,因此它仍然显示原始错误。如果删除.meteor/local/.typescript-cache,则可以识别已安装的node_modules。总的来说,我不信任barbatus:typescript(它试图变得聪明,并且做了太多复杂的事情,最终导致出现问题),但是目前我没有推荐的替代方法供一般使用。如果愿意,您可以file an issue并查看barbatus是否可以解决此特定问题。

Cannot use namespace ... as a type错误似乎是由于您的declarations.d.ts文件执行了declare module '*';而导致的。该错误对我来说没有意义,因此我提交了a TypeScript issue

答案 1 :(得分:0)

这对我有用。

import { Observable } from 'rxjs'

代替

import { Observable } from 'rxjs/Observable'