Argument of type 'string | null' is not assignable to parameter of type 'string'. Type 'null' is not assignable to type 'string'
As the error says, localStorage.getItem()
can return either a string or null
. JSON.parse()
requires a string, so you should test the result of localStorage.getItem()
before you try to use it.
For example:
this.currentUser = JSON.parse(localStorage.getItem('currentUser') || '{}');
or perhaps:
const userJson = localStorage.getItem('currentUser');
this.currentUser = userJson !== null ? JSON.parse(userJson) : new User();
See also the answer from Willem De Nys. If you are confident that the localStorage.getItem()
call can never return null
you can use the non-null assertion operator to tell typescript that you know what you are doing:
this.currentUser = JSON.parse(localStorage.getItem('currentUser')!);
the accepted answer is correct, just wants to add a newer and shorter answer.
this.currentUser = JSON.parse(localStorage.getItem('currentUser')!);