angular2 meteor ionic - не может использовать пространство имен Observable как тип - PullRequest
0 голосов
/ 24 сентября 2018

Я следую этому уроку , стараясь изо всех сил не ненавидеть угловатый всем своим существом.В учебнике используются Typescript и Angular2 и Ionic, 3 инструмента, которые я не совсем понимаю, но это как ... почему я вначале занимаюсь обучением.Мой опыт в веб-разработке был 2.0 с Django и большим количеством внешнего интерфейса, поэтому я очень хорошо знаю 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.

1 Ответ

0 голосов
/ 24 сентября 2018

FWIW на данный момент: я могу воспроизвести исходные ошибки, когда у меня не установлен node_modules.И даже после того, как я их установил, похоже, что плагин barbatus: typcript работает с ошибками и не делает недействительным свой кеш, поэтому он по-прежнему показывает исходные ошибки.Если я удаляю .meteor/local/.typescript-cache, то установленные node_modules распознаются.В общем, я не доверяю barbatus: typcript (он пытается быть умным и делает слишком много сложного, что приводит к проблемам), но у меня нет альтернативы, которую я мог бы порекомендовать для общего использования на данный момент.Если хотите, вы можете подать проблему и посмотреть, решит ли barbatus именно эту проблему.

Ошибка Cannot use namespace ... as a type, по-видимому, является следствием того, что ваш файл declarations.d.ts делает declare module '*';.Ошибка не имеет смысла для меня, поэтому я подал вопрос TypeScript .

...