title: How write generic interface which maps to properties only with selected types of T?
body: <p>Lets say I have an user object: </p>
  
  <pre><code>export class User {
  
    @Column()
    public email: string;
  
    @Column({ nullable: true })
    public name: string;
  
    @Column({ nullable: true })
    public birthDate: Date;
  
    @OneToMany(type =&gt; Article, article =&gt; article.author)
    public articles: Promise&lt;Article[]&gt;;
  
  } 
  </code></pre>
  
  <p>I can create a partial selection with type information with the following interface:</p>
  
  <pre><code>export interface Seed&lt;T&gt; {
    rows: {[K in keyof T]?: T[K]}[];
  }
  </code></pre>
  
  <p>The problem with this is the following: with this approach I see all relations of the entity so I have to make the key selection of the class partial to accept seeds like:</p>
  
  <pre><code>const USER_SEED: Seed&lt;User&gt; = {
    email: test@mail.com,
    name: 'Johny Test',
    birthDate: new Date('1990-01-08'),
  } 
  </code></pre>
  
  <p>This can cause incorrect seeds where a not nullable field is not provided or a field is provided what is not exists in the table because it's a relation.</p>
  
  <p>My question is how I can create selection of keys with the selected types? In this case I would select keys with the type of string, number and Date</p>