'string | null' 类型的参数不可分配给 'string' 类型的参数。类型 'null' 不可分配给类型 'string'。 Angular 12
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'))
==>
'string | null' 类型的参数不可分配给 'string' 类型的参数。
类型 'null' 不可分配给类型 'string'.
而 return 为空;
==>
类型 'null' 不可分配给类型 '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'.
}
您将 token()
定义为 return 只有 string
,但您正在尝试 return null
。您可以将定义更改为 return 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;
}
当然,使用此 getter 的代码需要考虑到这一点。
JSON.parse(sessionStorage.getItem('owner'))
==>
'string | null' 类型的参数不可分配给 'string' 类型的参数。
类型 'null' 不可分配给类型 'string'.
而 return 为空;
==>
类型 'null' 不可分配给类型 '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'.
}
您将 token()
定义为 return 只有 string
,但您正在尝试 return null
。您可以将定义更改为 return 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;
}
当然,使用此 getter 的代码需要考虑到这一点。