if (window?.sessionStorage?.getItem('accessToken')?.length > 0) {
this.navigateToApplication();
}
getting an error as :
Object is possibly 'undefined'.ts(2532)
how to fix this? I am trying to get the value by optional here.
CodePudding user response:
This could use a better error message. :-) The problem is that since window?.sessionStorage?.getItem('accessToken')? evaluates to undefined if the item isn't there, your if comparison is undefined | number > number, which is problematic from a type perspective.
You can just get rid of the > 0 since both undefined and 0 are falsy:
if (window?.sessionStorage?.getItem('accessToken')?.length) {
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^−−− Removed `> 0`
this.navigateToApplication();
}
Alternatively, provide a default value using nullish coalescing (??):
if (window?.sessionStorage?.getItem('accessToken')?.length ?? 0 > 0) {
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^
this.navigateToApplication();
}
window?.sessionStorage?.getItem('accessToken')?.length ?? 0 will evaluate to 0 if the item isn't there, which makes for a number > number comparison, which TypeScript is happy with.
CodePudding user response:
The problem here is that window.sessionStorage.getItem("accessToken") might be undefined. That's why you need to check beforehand if your item exists.
const accessToken = window.sessionStorage.getItem("accessToken");
if (accessToken && accessToken?.length > 0) {
this.navigateToApplication();
}
