错误 TS2344:类型“T[K]”不满足约束

Rod*_*lvo 0 typescript angularfire angularfire2 angular

我的 angular 应用程序有一个奇怪的问题,我刚刚将 AngularFire 添加到我的项目中,但是当我尝试将其安装时,它显示以下错误:

ERROR in nodae_modules/@angular/fire/angularfire2.d.ts(37,49): error TS2344: Type 'T[K]' does not satisfy the constraint '(...args: any[]) => any'.
node_modules/@angular/fire/angularfire2.d.ts(40,49): error TS2344: Type 'T[K]' does not satisfy the constraint '(...args: any[]) => any'.
node_modules/@angular/fire/angularfire2.d.ts(48,78): error TS2344: Type 'T[K]' does not satisfy the constraint '(...args: any[]) => any'.
node_modules/@angular/fire/angularfire2.d.ts(48,107): error TS2344: Type 'T[K]' does not satisfy the constraint '(...args: any[]) => any'.
node_modules/@angular/fire/angularfire2.d.ts(50,75): error TS2344: Type 'T[K]' does not satisfy the constraint '(...args: any[]) => any'.
node_modules/@angular/fire/angularfire2.d.ts(50,96): error TS2344: Type 'T[K]' does not satisfy the constraint '(...args: any[]) => any'.
Run Code Online (Sandbox Code Playgroud)

我是 Angular 和 AngularFire 的新手,我认为这是 TypeScript 的问题,所以这里是 tsconfig.json

{
 "compileOnSave": false,
 "compilerOptions": {  
 "baseUrl": "./",
 "outDir": "./dist/out-tsc",
 "sourceMap": true,
 "declaration": false,
 "module": "esnext",
 "moduleResolution": "node",
 "emitDecoratorMetadata": true,
 "experimentalDecorators": true,
 "importHelpers": true,
 "target": "es5",
 "typeRoots": [
  "node_modules/@types"
],
"lib": [
  "es2018",
  "dom"
]}}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

提前致谢。

Jas*_*ngh 11

您必须在 tsconfig.json 中设置一些选项。错误来自 node_modules/@angular/fire/angularfire2.d.ts。

配置:

{
  //...
  compilerOptions: {
    "skipLibCheck": true,
    //...
  }
}
Run Code Online (Sandbox Code Playgroud)

skipLibCheck:此选项用于跳过声明文件的类型检查。


Rod*_*lvo 6

我找到了问题的核心,我的Ng版本是7.3.9,AngularFire是6.0.0我不得不将版本降级到5.4.2。这完美地解决了我的问题。

感谢开发者的帮助。

建议:在向项目添加依赖项之前检查两个版本非常重要。


小智 5

如果您的 Angular CLI:7.2.3 版本

添加这些依赖项
"@angular/fire": "^5.4.2",
"firebase": "^6.6.2",
"firebase-admin": "^8.9.2",
"fs-extra": "^9.0 .1",

在 package.json 文件中并运行
npm install