Угловые ошибки TS: Ожидается объявление параметра

#javascript #angular #typescript

Вопрос:

У меня есть служебный файл, который должен загружаться cases из базы данных firebase.

кейсы.сервис.ts

 import { Injectable } from '@angular/core';
import { AngularFireDatabase, AngularFireList } from "@angular/fire/database";
import { Observable, Subject, Subscription, timer } from 'rxjs';
import { tap, map } from 'rxjs/operators';
import { Case } from '../models/case.model';

@Injectable({
  providedIn: 'root'
})

export class CasesService {

  constructor(private db: AngularFireDatabase) { }

  getUserCases(uid: string) { 
    //@ts-ignore
    let initialPayload = this.db.list(`/cases/${uid}`).snapshotChanges().pipe(map(actions => actions.map(a => ({ key: a.payload.key, ...a.payload.val() }) ))) as Observable<any[]>;
    return initialPayload;
  }
  
// @ts-ignore
  createCase(case :Case) {
    //@ts-ignore
    let caseRef = this.db.database.ref(`/cases/${case.medicUid}`).push(); 
    //@ts-ignore
    let caseKey = caseRef.getKey();
    case.uid = casesKey; 
    return caseRef.update(case);
  }
}
 

случаи.компонент.ts

 import { Component, OnInit } from '@angular/core';
import { AuthService } from '../shared/services/auth.service';
import { CasesService } from '../shared/services/cases.service';
import { Case } from '../shared/models/case.model';

@Component({
  selector: 'app-cases',
  templateUrl: './cases.component.html',
  styleUrls: ['./cases.component.css']
})

export class CasesComponent implements OnInit {

  get userData() {
    return this.authService.userData;
  }
  get userExtras() {
    return this.authService.userExtras;
  }

  casesLoaded = false;
  //@ts-ignore
  cases: Case[];
  case: Case = { uid: '', name: '', details: '', date: '', filesUrls: [], medicUid: '', medicFname: '', medicLname: '' };

  constructor(
    private casesService: CasesService,
    public authService: AuthService
  ) {}

  ngOnInit(): void {
    this.getUserCases(this.userData.uid);
  }

  getUserCases = (uid: string) => {
    this.casesService.getUserCases(uid).subscribe((res) => {
      this.cases = res;
      this.casesLoaded = true;
    });
  }

//@ts-ignore
createCase(case: Case){
  //@ts-ignore
  this.casesService.createCase(case).then(res => {
    console.log('success creating the case')
    //@ts-ignore
  }).catch(error => {
    console.log(error);
  })
}

}
 

Я получаю странные ошибки в createCase методе как в компоненте, так и в файле службы. Вот несколько скриншотов:

createCase ошибки в компоненте:

Те же ошибки появляются для createCase метода внутри служебного файла.

Обратите внимание, что для getUserCases метода не появляется никаких ошибок.

Ранее я выполнял проект, в котором использовал точно такую же настройку, и там у меня не было ошибок. Может возникнуть проблема с пакетом, поэтому будет включен мой пакет.json:

пакет.json

 {
 //...
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "watch": "ng build --watch --configuration development",
    "test": "ng test"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "~12.0.3",
    "@angular/cdk": "^12.2.10",
    "@angular/common": "~12.0.3",
    "@angular/compiler": "~12.0.3",
    "@angular/core": "~12.0.3",
    "@angular/fire": "^6.1.5",
    "@angular/forms": "~12.0.3",
    "@angular/platform-browser": "~12.0.3",
    "@angular/platform-browser-dynamic": "~12.0.3",
    "@angular/router": "~12.0.3",
    "firebase": "^8.6.7",
    "primeflex": "^2.0.0",
    "primeicons": "^4.1.0",
    "primeng": "^12.2.1",
    "rxjs": "~6.6.0",
    "tslib": "^2.1.0",
    "zone.js": "~0.11.4"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~12.0.3",
    "@angular/cli": "^12.1.3",
    "@angular/compiler-cli": "~12.0.3",
    "@types/jasmine": "~3.6.0",
    "@types/jest": "^26.0.23",
    "@types/mocha": "^8.2.2",
    "@types/node": "^12.20.15",
    "jasmine-core": "~3.7.0",
    "karma": "~6.3.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage": "~2.0.3",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "typescript": "~4.2.3",
    "@angular-devkit/architect": ">= 0.900 < 0.1300",
    "firebase-tools": "^8.0.0 || ^9.0.0",
    "fuzzy": "^0.1.3",
    "inquirer": "^6.2.2",
    "inquirer-autocomplete-prompt": "^1.0.1",
    "open": "^7.0.3",
    "jsonc-parser": "^3.0.0"
  }
}
 

Комментарии:

1. Измените getUserCases = (uid: строка) => на getUserCases (uid: строка): void =>> и добавьте : void к другим функциям, которые ничего не возвращают. Следует хотя бы избавиться от некоторых ошибок..

Ответ №1:

Я не могу поверить, что это так, но проблема в том, что это case слово зарезервировано в javascript. Я не могу использовать его для обычного именования переменных, он ожидает определенных действий.

Изменил имя переменной, все работает гладко.