简体   繁体   中英

Argument of type 'string | null' is not assignable to parameter of type 'string'. Type 'null' is not assignable to type 'string'. Angular 12

JSON.parse(sessionStorage.getItem('owner'))
==> Argument of type 'string | null' is not assignable to parameter of type 'string'. Type 'null' is not assignable to type 'string'.

And the return null;
==> Type 'null' is not assignable to type 'string'.

public get owner(): Owner{
if(this._owner != null){
  return this._owner;
} else if (this._owner == null && sessionStorage.getItem('owner') != null){
  this._owner = JSON.parse(sessionStorage.getItem('owner')) as Owner; // <== HERE
  return this._owner;
}
return new Owner();

}

public get token(): string{
if (this._token != null) {
  return this._token;
} else if (this._token == null && sessionStorage.getItem('token') != null) {
  this._token = sessionStorage.getItem('token') as string;
  return this._token;
}
return null;   // <== HERE: Type 'null' is not assignable to type 'string'.

}

You define token() as returning only a string , yet you're trying to return null . You can change the definition to return string | null string | null :

public get token(): string | null {
    if (this._token != null) {
        return this._token;
    } else if (this._token == null && sessionStorage.getItem('token') != null) {
        this._token = sessionStorage.getItem('token') as string;
        return this._token;
    }
    return null;
}

Of course the code using this getter needs to account for that.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM