Home > OS >  How to handle a return type Maybe<unknown>
How to handle a return type Maybe<unknown>

Time:01-29

Iam using typescript and iam trying to get the accounts from the current user like its showed on the metamask official documentation Metamask Doc:

const accounts = await window.ethereum.request({
                  method: "eth_accounts",
                }); 

The call to the request function returns a result with the Maybe<unknown> type.

Then iam trying to access the first element of accounts like this because its supposed to be an array of string :

accounts[0]

But i have the following errors:

Object is possibly 'null' or 'undefined'.ts(2533)

Element implicitly has an 'any' type because expression of type '0' can't be used to index type 'Partial<unknown>'.
  Property '0' does not exist on type 'Partial<unknown>'.ts(7053)

So, how can i manage to handle this situation? I need to properly get the return of the request function and make typescript accept it as an array of string.

Thanks.

CodePudding user response:

The errors indicate that the returned value from the request might be null, undefined or even not-an-array value. So you have to check those cases before accessing its value.

const accounts = await window.ethereum.request({
  method: "eth_accounts",
}); 
if (accounts && Array.isArray(accounts)) {
  // Here you can access accounts[0]
} else {
  // Handle errors here if accounts is not valid. 
}
  •  Tags:  
  • Related