title: Typescript: parameter 'error' implicitly has an 'any' type
body: <p>First day with typescript and i got ~logic error?</p>
  
  <p><strong>server.ts</strong></p>
  
  <pre><code>interface StopAppCallback {
      (err: Error | null): void
  }
  
  interface StartAppCallback {
      (err: Error | null, result?: Function): void
  }
  
  export default (startCb: StartAppCallback): void =&gt; {
      const stopApp = (stopCb: StopAppCallback): void =&gt; {
          return stopCb(null)
      }
  
      return startCb(null, stopApp)
  }
  </code></pre>
  
  <p><strong>boot.ts</strong></p>
  
  <pre><code>import server from './src/server'
  
  server((err, stopApp) =&gt; { //&lt;-- no error
      if (err) {
          throw err
      }
  
      if (typeof stopApp !== 'function') {
          throw new Error('required typeof function')
      }
  
      stopApp((error) =&gt; { //&lt;-- tsc error
          if (error) {
              throw error
          }
      })
  })
  </code></pre>
  
  <p>tsc error: <strong>parameter 'error' implicitly has an 'any' type</strong></p>
  
  <p>I don't get it, interfaces are defined and set in same way. So whats the deal?
  Turning off <em>noImplicitAny</em> and <em>strict</em> in settings or adding <em>:any</em> is dum.</p>
  
  <p>What i don't understand in tsc logic? Or i am defining something wrong?</p>