title: How to omit fields in object spread?
body: <p>I have one interface with many fields and other interface with almost all fields (just one less).</p>
  
  <p><strong>How in TypeScript</strong> without untyped unsafe crutches (<code>&lt;&gt;</code>, <code>as</code>, <code>any</code>, <code>unknown</code> and similar) <strong>can one exclude fields in object spread</strong> (so without enumerating every field I want to copy)?</p>
  
  <pre><code>interface A {
      fieldA: number;
      fieldB: string;
      fieldC: number;
      fieldD: string;
      fieldE: number;
      fieldF: string;
  }
  
  interface B {
      fieldA: number;
      fieldB: string;
      fieldC: number;
      fieldD: string;
      fieldE: number;
      // no fieldF here
  }
  
  const a: A = {
      fieldA: 1,
      fieldB: 'b',
      fieldC: 3,
      fieldD: 'd',
      fieldE: 5,
      fieldF: 'f'
  }
  
  const b: B = {
      ...a,
      fieldF: undefined
  };
  </code></pre>
  
  <p>This doesn't compile, because fieldF is still present, only have a value of <code>undefined</code>.</p>