web-dev-qa-db-fra.com

Typescript - Le paramètre 'u' a implicitement un type 'quelconque'

J'ai converti ce code au dernier Angular 2. authentication.service.ts

À quoi devrait ressembler le code?

app/auth/auth.service.ts(30,40): error TS7006: Parameter 'u' implicitly has an 'any' type.

// services/auth.service.ts
import {Injectable} from '@angular/core';
import {Router} from '@angular/router';

//http://4dev.tech/2016/03/login-screen-and-authentication-with-angular2/
//https://github.com/leonardohjines/angular2-login
export class User {
  constructor(
    public email: string,
    public password: string) { }
}

var users:any = [
  new User('[email protected]','adm9'),
  new User('[email protected]','a23')
];

@Injectable()
export class AuthenticationService {

  constructor(
    private _router: Router){}

  logout() {
    localStorage.removeItem("user");
    this._router.navigate(['Login']);
  }

  login(user:any){
    var authenticatedUser = users.find(u => u.email === user.email);
    if (authenticatedUser){
      localStorage.setItem("user", authenticatedUser);
      this._router.navigate(['Home']);      
      return true;
    }
    return false;

  }

   checkCredentials( ){
    if (localStorage.getItem("user") === null){
        this._router.navigate(['Login']);
    }
  } 
}
7
Tampa

Pensez à utiliser (u: any) => ...

9
Cengkuru Michael

Vous pouvez essayer d'utiliser le type User au lieu de any:

var users:User[] = [
  (...)
];

et

var authenticatedUser = users.find((u:User) => u.email === user.email);
9
Thierry Templier

La raison du problème est un paramètre qui n'est pas correctement défini, car il s'agit de la variable "u" qui suit l'exemple:

var authenticatedUser = users.find(u => u.email === user.email);

si vous ne possédez pas le modèle de classe de service, définissez "u" comme une chaîne ou un autre type dont vous avez besoin dans l'instant:

var authenticatedUser = users.find(u:string => u.email === user.email);
2
Wilder Perozo

changement

fichier tsconfig.json

"noImplicitAny": false,

et ajouter

'ng2-formly': 'npm: ng2-formly/bundles/ng2-formly.umd.js',

à systemjs.config.js

0
Muhammad Arslan