title: Require at least one property of given type
body: <p>consider the following code</p>
  
  <pre><code>class FootballService {
    getMatches() { return [] }
  }
  
  function defineMatchesOnComponent(component: X) {
    component.matches = Object.values(component)
      .find(property =&gt; property instanceof FootballService)
      .getMatches();
  }
  
  class ComponentA {
    constructor(public footballService: FootballService, public otherProp: string) {}
  }
  
  class ComponentB {
    constructor(public whateverNameYouWant: FootballService, public otherProp: number) {}
  }
  
  class ComponentC {
    constructor(public otherProp: string) {}
  }
  
  const a = new ComponentA(new FootballService(), 'xd');
  const b = new ComponentB(new FootballService(), 2);
  const c = new ComponentC(true);
  
  </code></pre>
  
  <p>is it possible to define such type <code>X</code> that the following will happen:</p>
  
  <pre><code>defineMatchesOnComponent(a); // should be ok
  defineMatchesOnComponent(b); // should be ok
  defineMatchesOnComponent(c); // should be type error
  </code></pre>
  
  <p>In other words is it possible to require at least one property but it may have any name ?</p>
  
  <p>demo: <a href="https://stackblitz.com/edit/typescript-fekr1o" rel="nofollow noreferrer">https://stackblitz.com/edit/typescript-fekr1o</a></p>