title: TypeScript: error TS2322: Type '{}' is not assignable to type '...'
body: <p>I have an interface:</p>
  
  <pre><code>export default interface ValidationResult {
    valid: boolean
    errors?: string[]
  }
  </code></pre>
  
  <p>And a function that returns an object implementing that interface:</p>
  
  <pre><code>  static validateTitle(title: string): ValidationResult {
      if (title == null || title === '')
        return {valid: false, errors: ["Title can't be empty."]}
  
      return {valid: true}
    }
  </code></pre>
  
  <p>But when I try to use the first function inside an other function:</p>
  
  <pre><code>static async validateMovie(title: string): Promise&lt;ValidationResult&gt; {
      const result = this.validateTitle(title)
      if (result.valid === false)
        return new Promise((resolve, reject) =&gt; { resolve(result) })
      // other validations...
  }
  </code></pre>
  
  <p>I get a TypeScript error:</p>
  
  <pre><code>error TS2322: Type '{}' is not assignable to type 'ValidationResult'.
    Property 'valid' is missing in type '{}'.
  
  25       return new Promise((resolve, reject) =&gt; { resolve(result) })
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  </code></pre>
  
  <p>I tried casting with <code>as ValidationResult</code> everywhere but without success. What is wrong? I don't understand what TypeScript is complaining about.</p>