Typescript 编译器错误 - 提供的参数与调用目标的任何签名都不匹配

Posted

技术标签:

【中文标题】Typescript 编译器错误 - 提供的参数与调用目标的任何签名都不匹配【英文标题】:Typescript compiler error - supplied parameters do not match any signature of call target 【发布时间】:2016-02-17 09:43:03 【问题描述】:

Typescript 编译器 - 提供的参数与调用目标的任何签名都不匹配。

我正在使用打字稿创建一个 angular2 应用程序。 当我将实例设置为 firebase 时,它​​在 git bash 命令行中给了我这个错误:“提供的参数与调用目标的任何签名都不匹配”。

它抱怨这行代码:

this.data = new AngularFire(new Firebase('https://markng2.firebaseio.com/users'));

这是 app.ts 文件的代码:

   import Component, View, bootstrap, bind, provide from 'angular2/angular2';
   import Router, ROUTER_BINDINGS, RouterOutlet, RouteConfig, RouterLink, ROUTER_PROVIDERS, APP_BASE_HREF from 'angular2/router';
   import Injectable from 'angular2/angular2';
   import HTTP_PROVIDERS, Http, Headers from 'angular2/http';

   import Todo from './components/todo/todo';
   import About from './components/about/about';
   import AuthService from './authService';
   import EnvironmentService from './environmentService';

   import AngularFire, FirebaseArray from '../firebase/angularfire';

   @Component(
           selector: 'app'
   )

   @View(
       template: `
           <div class="container">
               <nav>
                <ul>
                    <li><a [router-link]="['/Home']">Todo</a></li>
                    <li><a [router-link]="['/About']">About</a></li>
                   </ul>
               </nav>
            <router-outlet></router-outlet>
           </div>
        `,
       directives: [RouterOutlet, RouterLink]
   )

   @RouteConfig([
     path: '/', redirectTo: '/home' ,
     path: '/home', component: Todo, as: 'Home' ,
     path: '/about', component: About, as: 'About' 
   ])

   @Injectable()
   export class AppComponent 
       store:FirebaseArray;
       data: AngularFire;

       constructor(_router: Router, _authService: AuthService) 

           //Firebase setup - Here the line below seems to be the issue???:
           this.data = new AngularFire(new Firebase('https://markng2.firebaseio.com/users'));
           this.store = this.data.asArray();        

           _router.subscribe((val) =>      

               _authService.isUserLoggedIn().then((success) =>     
                   if(!success)                    
                       _router.navigate(['/About']);
                   else
                       _authService.getSpotifyData().then((success) =>     
                           console.log(success);                        
                       );  
                    
               );  
           )
       
   

   bootstrap(AppComponent, [ROUTER_PROVIDERS, provide(APP_BASE_HREF, useValue: '/'), HTTP_PROVIDERS, AuthService, EnvironmentService]);

这是 Git Bash 命令错误:

【问题讨论】:

Firebase 定义在哪里? 我在本地存储 Firebase 文件,并且我的 index.html 链接到脚本。 App.ts 文件就是上面的代码。 Firebase 似乎工作正常,角度 2。但打字稿仍然向我显示错误。 这个构造函数可以吗?我在定义中看不到这样的东西:github.com/DefinitelyTyped/DefinitelyTyped/blob/master/… 我觉得构造函数没问题,因为你new对象而不是注入构造函数。 我试着看看。我唯一注意到的是github.com/DefinitelyTyped/DefinitelyTyped/blob/master/…@deprecated. Not possible with AngularFire 1.0+。也许它有些重要。 【参考方案1】:

更新: We are working on AngularFire2 right now

我认为这里的困惑在于现在没有 Angular 2 的 AngularFire。

当前的 AngularFire 1.0+ 与 Angular 2 不兼容。它只是 AngularJS 1.2+。

This AngularFire for Angular 2 是我为this presentation 写的东西。它不受官方支持。

虽然目前还没有与 Firebase 和 Angular 2 的官方集成,但 Firebase SDK 由于 zone.js 的魔力而运行良好。

【讨论】:

一旦我将 firebase js 更新到最新版本,它似乎工作正常。谢谢!

以上是关于Typescript 编译器错误 - 提供的参数与调用目标的任何签名都不匹配的主要内容,如果未能解决你的问题,请参考以下文章

在“”类型上找不到带有“数字”类型参数的索引签名 - Typescript 编译器错误

TypeScript 中的函数重载

React + Redux-Observable + Typescript - 编译,参数不可分配错误

提供的参数与调用目标的任何签名都不匹配 - Typescript

错误 TS2346:提供的参数与调用目标的任何签名都不匹配

打字稿参数数量错误