【问题标题】:TSLint mistakes in angular 2角度 2 中的 TSLint 错误
【发布时间】:2023-03-29 06:06:01
【问题描述】:

我的代码中有几个错误。我正在使用 Angular 2 + TSLint:

constructor(http: Http) {
    this.http = http;
--> let currentUser = JSON.parse(localStorage.getItem("currentUser"));
    this.token = currentUser && currentUser.token;
}

在 currentUser 我有这个错误:message: 'expected variable-declaration: 'currentUser' to have a typedef;

public loginC (username: string, password: string): Observable<boolean> {
    return this.http.post( authURL + loginURL,
                     --> JSON.stringify({ password: password, username: username }))
    .map((response: Response) => {
        let token: string = response.json() && response.json().token;
        if (token) {
          this.token = token;
      --> localStorage.setItem("currentUser", JSON.stringify({token: token, username: username}));
            return true;
        } else {
            return false;
        }
    });
}

password: password, username: username 这个:message: 'Expected property shorthand in object literal. 我真的很理解这一点。最后我可以写一个简单的model: any {};

export class LoginComponent {
--> public model: any = {};
public loading: boolean = false;
public error: string = "";
constructor (private router: Router, private authenticationService: ServerDataComponent) {
    // 
}

public login(): void {
    this.loading = true;
    this.authenticationService.loginC(this.model.username, this.model.password)
        .subscribe(result => {
           --> if (result === true) {
                this.router.navigate(["/table_per"]);
            } else {
                this.error = "Введен неверный логин и/или пароль";
                this.loading = false;
            }
        });
}

对于任何 - Type declaration of 'any' is forbidden;

Ror 结果 - expected arrow-parameter: 'result' to have a typedef

【问题讨论】:

    标签: angular typescript tslint


    【解决方案1】:

    对于expected variable-declaration: 'currentUser' to have a typedef,您可以为您的自定义类型定义interface

    export interface User {
      token: string;
    }
    

    并用它来设置类型。

    let currentUser: User = JSON.parse(localStorage.getItem("currentUser"));
    

    对于Expected property shorthand in object literal,当键名与变量名匹配时,您可以使用简写语法。

    JSON.stringify({token, username})
    

    对于Type declaration of 'any' is forbidden,您可以尝试将类型更改为Object。如果不是,您需要为您的模型声明另一个 interface

    public model: Object = {};
    

    expected arrow-parameter: 'result' to have a typedef需要设置参数的类型。

    .subscribe((result: boolean) => {
    

    【讨论】:

    • 我添加了Object,现在添加了Property token does not exist of type Object
    • 在构造函数中添加这个?
    • 不,在您的 class 之外,您可以创建一个新文件 user.interface.ts 并将其导入或将其放在同一个文件中。
    • 谢谢,它有效,我还有两个错误,我现在更新代码
    猜你喜欢
    • 2017-06-03
    • 2016-03-22
    • 2023-03-04
    • 2016-05-26
    • 2016-08-19
    • 2016-11-20
    • 2018-02-08
    • 1970-01-01
    • 2018-12-31
    相关资源
    最近更新 更多