javascript - Angular - TS 错误:预期参数声明
问题描述
我有一个应该cases
从 firebase 数据库加载的服务文件。
案例.service.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);
}
}
case.component.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
组件中的错误:
(...) 隐含
any
返回类型(这个可以用 //@ts-ignore 解决,但其余的不能) https://imgur.com/YhPfMsv预期参数声明 https://imgur.com/yOC3cpC
属性初始化程序的预期'=' https://imgur.com/wjELqRx
参数表达式预期 https://imgur.com/lZznbPr
createCase
服务文件中的方法也会出现相同的错误。
请注意,该getUserCases
方法不会出现错误。
我以前做过一个项目,我使用了完全相同的设置,并且没有错误。可能是包问题,因此将包括我的 package.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"
}
}
解决方案
我不敢相信就是这样,但问题是这个case
词在 javascript 中是保留的。我不能将它用于正常的变量命名,它需要某些操作。
改了变量名,一切顺利。
推荐阅读
- sql - 如何连接两个时间序列查询
- intellij-idea - 在 intellij 中增加最近文件的数量
- swift - AVPlayer 与 AWS Cookie 使用 AirPlay
- css - Safari 上的颜色比 Chrome/其他浏览器上的颜色要深得多
- eclipse - Tomcat 根本或自动没有检测到对 java 文件的更改
- vba - 如何根据 Windows 登录名使用 VBA 获取电子邮件地址?
- regex - 为什么子字符串会阻止与负前瞻匹配?
- javascript - 异步身份验证 angularjs
- javascript - 如何让 Bootstrap 数据表与 javascript 自动刷新一起使用?
- scala - SBT - 传递依赖冲突