title: This expression is not callable. Type '{}' has no call signatures. TS2349
body: <p>A quite common TypeScript error TS2349 that <code>sth has no call signatures</code>.</p>
  <p>In different situations, it solves with different workarounds. But dealing with a react's Context the optimal solution I've found is using <code>// @ts-ignore</code>.</p>
  <p>Please, what is the right approach in this case?</p>
  <pre><code>// auth.tsx
  
  import { CurrentUserContext } from 'components/currentUser';
  import React, { useState, useEffect, useContext } from 'react';
  
  const Auth = ({ onLogin }: {onLogin: any}) =&gt; {
  
    const [, setCurrentUserState] = useContext(CurrentUserContext);
    const [credentials, { data }] = useMutation(AUTH);
  
    ...
  
    useEffect(() =&gt; {
      if (data) {
  
        // TypeScript Error without @ts-ignore:
        // This expression is not callable.
        // Type '{}' has no call signatures.  TS2349
  
        // @ts-ignore
        setCurrentUserState((state: any) =&gt; ({
          ...state,
          currentUser: data.login.author,
        }))
      }
    }, [data, setCurrentUserState]);
  
    return &lt;div&gt;{data.login.author}&lt;/div&gt;
  }
  
  </code></pre>
  <pre><code>// currentUser.tsx
  
  import React, { createContext, useState } from 'react';
  
  const CurrentUserContext = createContext([{}, () =&gt; {}]);
  
  const CurrentUserProvider = ({ children }: {children: any}) =&gt; {
    const [state, setState] = useState({
      currentUser: null,
    })
    return (
      &lt;CurrentUserContext.Provider value={[state, setState]}&gt;
        { children }
      &lt;/CurrentUserContext.Provider&gt;
    )
  };
  
  export {
    CurrentUserContext,
    CurrentUserProvider,
  }
  </code></pre>
  <p>n.b. &quot;react&quot;     : &quot;^16.13.1&quot;
  &quot;typescript&quot;: &quot;~3.7.2&quot;</p>