打字稿 - 参数' u'隐含地有一个“任何”的类型

时间:2016-07-05 07:12:16

标签: typescript angular

我将此代码转换为最新的Angular 2. authentication.service.ts

代码应该是什么样的?

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('admin@admin.com','adm9'),
  new User('user1@gmail.com','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']);
    }
  } 
}

5 个答案:

答案 0 :(得分:9)

您可以尝试使用$wsdl = "https://apps.test.net/Services/Gateway.asmx?WSDL"; $apiCode = "****-****-****-****-********"; ini_set("soap.wsdl_cache", "0"); ini_set("soap.wsdl_cache_ttl", "0"); ini_set("soap.wsdl_cache_enabled", "0"); $opts = array( 'ssl' => array('ciphers'=>'DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:KRB5-DES-CBC3-MD5:KRB5-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DES-CBC3-MD5:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHA:RC2-CBC-MD5:KRB5-RC4-MD5:KRB5-RC4-SHA:RC4-SHA:RC4-MD5:RC4-MD5:KRB5-DES-CBC-MD5:KRB5-DES-CBC-SHA:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:DES-CBC-MD5:EXP-KRB5-RC2-CBC-MD5:EXP-KRB5-DES-CBC-MD5:EXP-KRB5-RC2-CBC-SHA:EXP-KRB5-DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC2-CBC-MD5:EXP-KRB5-RC4-MD5:EXP-KRB5-RC4-SHA:EXP-RC4-MD5:EXP-RC4-MD5'),'http'=>array( 'user_agent' => 'PHPSoapClient' ) ); $params =array ( "encoding"=>"ISO-8859-1", 'stream_context' => stream_context_create($opts), "trace"=>1, "exceptions"=>1, "connection_timeout"=>2000,'cache_wsdl' => WSDL_CACHE_NONE); $client = new SoapClient ( $wsdl, $params ); 类型而不是User

any

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

答案 1 :(得分:9)

考虑使用(u:any)=> ...

答案 2 :(得分:2)

问题的原因是一个未正确定义的参数,因为这种情况是变量" u"以下示例:

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

如果你没有服务的班级模型,应该定义" u"你现在需要的字符串或其他类型:

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

答案 3 :(得分:0)

我使用的是您使用的相同示例。

不是应用任何,而是将参数类型设置为User

所以,你的登录方法是这样的:

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

然后,删除对any关键字的任何引用。

答案 4 :(得分:0)

变化

tsconfig.json文件

“noImplicitAny”:false,

并添加

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

到systemjs.config.js