title: How to cover with typescript sequelize findAll with include
body: <p>I'm trying to type static class method of sequelize model which return findAll with include:</p>
  <pre><code>import { Model, Optional } from 'sequelize';
  import Rule from './rule';
  
  interface OfferAttributes {
    id: number;
  
    name: string;
  }
  type OfferCreationAttributes = Optional&lt;OfferAttributes, 'id'&gt;;
  
  export class Offer extends Model&lt;OfferAttributes, OfferCreationAttributes&gt; implements OfferAttributes {
    public readonly id!: number;
  
    public name!: string;
  
    public static getWithRules() {
      // error here
      return Offer.findAll&lt;Offer &amp; { rules: Rule[] }&gt;({ include: ['rules']});
    }
  }
  </code></pre>
  <p>I prefer to use generic instead of unknow solution like this:</p>
  <pre><code>Offer.findAll({ include: ['rules']}) as unknown as Promise&lt;(Offer &amp; { rules: Rules[] })[]&gt;
  </code></pre>
  <p>but get error <code>Property 'rules' is missing in type 'Offer' but required in type '{ rules: Rule[]; }'.</code> Generic of findAll is <code>&lt;M extends Model&gt;</code> but it's not match <code>&lt;Offer &amp; { rules: Rules[] }&gt;</code></p>
  <p>Does anybody know the most correct way to cover this case with generic?</p>