2016-07-05 25 views
6

tôi chuyển đổi mã này vào mới nhất kiễu góc 2. authentication.service.tsnguyên cảo - Parameter 'U' ngầm có một 'bất kỳ' loại

mã nên trông như thế nào?

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']); 
    } 
    } 
} 
+0

Bạn đã thấy bản sửa lỗi cho lỗi này chưa? –

Trả lời

9

Bạn có thể cố gắng sử dụng các loại User thay vì any:

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

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

Nguyên nhân của vấn đề là một tham số mà không được định nghĩa đúng cách, như trường hợp này là biến "u" theo ví dụ:

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

nếu bạn không có mô hình lớp dịch vụ, cần được xác định "u" như chuỗi hoặc loại khác những gì bạn cần trong thời điểm này:

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

Tôi đang sử dụng ví dụ tương tự bạn đã sử dụng.

Thay vì áp dụng bất kỳ, hãy đặt loại thông số thành User.

Vì vậy, phương pháp đăng nhập của bạn sẽ là một cái gì đó như thế này:

login(user: User): boolean { ...

Sau đó, loại bỏ bất kỳ tham chiếu đến any từ khóa.

-2

thay đổi

tsconfig.json tập tin

"noImplicitAny": false,

và thêm

'ng2-Trước đây': 'NPM: ng2-Trước đây/bó/ng2- formly.umd.js ',

tới systemjs.config.js

7

Cân nhắc sử dụng (u: any) => ...

Các vấn đề liên quan