Как решить rxjs Ошибка Typescript (Ionic 3, angularfire2) - PullRequest
0 голосов
/ 22 февраля 2019

У меня появляются новые ошибки, когда я пытаюсь обслужить свое приложение ionic 3 с помощью angularfire2.

Это ошибки:

Ошибка машинописного текста ';'ожидается.C: /Users/Admin/Verein/node_modules/rxjs/internal/types.d.ts

экспорт объявить тип ObservedValueOf = O extends ObservableInput?T: никогда;

Ожидается выражение ошибки машинописного текста.C: /Users/Admin/Verein/node_modules/rxjs/internal/types.d.ts

экспорт объявить тип ObservedValueOf = O extends ObservableInput?T: never;

Ошибка Typescript «ObservableInput» относится только к типу, но здесь используется в качестве значения.C: /Users/Admin/Verein/node_modules/rxjs/internal/types.d.ts

Ошибка машинописного текста Не удается найти имя 'infer'.C: /Users/Admin/Verein/node_modules/rxjs/internal/types.d.ts

и многие другие, связанные с rxjs.Я использую его, например, так:

import { Note } from '../../model/note/note.model';
import { AngularFireDatabase } from 'angularfire2/database';
import { map } from 'rxjs/operators';
import { Observable } from 'rxjs';

@Component({
  selector: 'page-aufgaben',
  templateUrl: 'aufgaben.html'
})
export class AufgabenPage {


  aufgaben: Observable<Note[]>;

  constructor(public navCtrl: NavController, private modal: ModalController, public events: Events, private db: AngularFireDatabase) {

      this.aufgaben = this.db.list('/aufgabenverzeichnis/').snapshotChanges().pipe(
     map(changes =>
       changes.map(c => ({ key: c.payload.key, ...c.payload.val() }))
     )
   );
  }

это мой пакет. Json:

{
  "name": "Verein",
  "version": "0.0.1",
  "author": "Ionic Framework",
  "homepage": "http://ionicframework.com/",
  "private": true,
  "scripts": {
    "start": "ionic-app-scripts serve",
    "clean": "ionic-app-scripts clean",
    "build": "ionic-app-scripts build",
    "lint": "ionic-app-scripts lint"
  },
  "dependencies": {
    "@angular/animations": "5.2.11",
    "@angular/common": "5.2.11",
    "@angular/compiler": "5.2.11",
    "@angular/compiler-cli": "5.2.11",
    "@angular/core": "5.2.11",
    "@angular/forms": "5.2.11",
    "@angular/http": "5.2.11",
    "@angular/platform-browser": "5.2.11",
    "@angular/platform-browser-dynamic": "5.2.11",
    "@ionic-native/core": "~4.18.0",
    "@ionic-native/splash-screen": "~4.18.0",
    "@ionic-native/status-bar": "~4.18.0",
    "@ionic/storage": "2.2.0",
    "@reactivex/rxjs": "^5.5.3",
    "angularfire2": "^5.1.1",
    "firebase": "^5.8.4",
    "ionic-angular": "3.9.3",
    "ionicons": "3.0.0",
    "promise-polyfill": "^8.1.0",
    "rxjs": "^6.4.0",
    "rxjs-compat": "^6.4.0",
    "sw-toolbox": "3.6.0",
    "zone.js": "0.8.29"
  },
  "devDependencies": {
    "@ionic/app-scripts": "3.2.1",
    "@ionic/lab": "1.0.20",
    "typescript": "^2.6.2"
  },
  "description": "An Ionic project"
}

Я знаю, что это как-то связано с разными версиями, но я читал, что установкаrxjs compat должен решить проблему.Проблема в том, что этого никогда не было.Когда я сохраняю части своего проекта, ничего не меняя в своей IDE, он снова работает после перезагрузки лабораторной страницы, что еще более странно.Так что я действительно не знаю, что делать дальше.Пожалуйста помоги.

РЕДАКТИРОВАТЬ: После следования приведенным ниже советам и обновления до typscript 2.7.2 и rxjs / rxjs-compat до 6.3.3 вышеуказанные ошибки исчезли, но я получаю кучу новых, которые тоже исчезают послеслучайным образом сохраняю проект в моей IDE, но возвращаюсь снова, если я снова работаю --lab.Вот новые ошибки:

Мне удалось избавиться от некоторых из них (все они были связаны с синтаксисом), но есть один тип, от которого я не могу избавиться, потому что я не знаюКак изменить синтаксис.Все оставшиеся ошибки выглядят следующим образом:

Ошибка типографской ошибки Тип 'Наблюдаемый <{ключ: строка;} []> 'нельзя назначить типу Observable <(Note [])>.Тип '{ключ: строка;} [] 'нельзя назначить типу' Note [] '.Тип '{ключ: строка;} 'нельзя назначить типу' Note '.Свойство 'titel' отсутствует в типе '{key: string;} '.

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { ModalController } from 'ionic-angular';
import { Events } from 'ionic-angular';
import { Note } from '../../model/note/note.model';
import { AngularFireDatabase } from 'angularfire2/database';
import { map } from 'rxjs/operators';
import { Observable } from 'rxjs';

@Component({
  selector: 'page-aufgaben',
  templateUrl: 'aufgaben.html'
})
export class AufgabenPage {

  public color: string = 'primary';
  public color2: string ='primary';
  aufgaben: Observable<Note[]>;

  constructor(public navCtrl: NavController, private modal: ModalController, public events: Events, private db: AngularFireDatabase) {

/*error points to this.aufgaben*/ this.aufgaben = this.db.list('/aufgabenverzeichnis/').snapshotChanges().pipe(
         map(changes =>
           changes.map(c => ({ key: c.payload.key, ...c.payload.val() }))
         )
       );
      }

Note.model.ts:

 export interface Note {
  titel: string;
  beschreibung: string;
}

Эта ошибка возникает несколько раз в разных файлах TS, поэтому я привел только один пример.Все они исчезают после сохранения и вновь появляются после повторного открытия приложения, без каких-либо изменений.Так что я действительно не знаю, как это исправить.Связаны ли эти синтаксические ошибки с новой версией Typscript?

РЕДАКТИРОВАТЬ: мне удалось решить проблему, изменив «aufgaben: Observable<Note[]>» на «aufgaben: Observable<any[]>. Спасибо за помощь:).

1 Ответ

0 голосов
/ 22 февраля 2019

Эти проблемы связаны с rxjs и Typescript.В новой версии rxjs (6.4.0) минимальная поддерживаемая версия TypeScript составляет 2,8.Но в вашем случае TypeScript версия 2.6.2.Это причина этой проблемы.Чтобы решить эту проблему, обновите TypeScript до 2.8 или понизьте rxjs и rxjs-compat до версии майнера, которая совместима с Typescript 2.6.2.

В моем случае я понизил rxjs и rxjs-compat до 6.3.3 версия (Моя версия Typescript была 2.7.2).

Более подробная информация здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...