title: Is it possible to generate strict type from partial type?
body: <p>We can generate partial type from strict type like below (from TypeScript 2.1):</p>
  
  <pre><code>type Partial&lt;T&gt; = {
      [P in keyof T]?: T[P];
  };
  type Person = { name: string, age: number } 
  type PersonPartial = Partial&lt;Person&gt;; // === { name?: string, age?: number }
  </code></pre>
  
  <p>Conversely, Is it possible to generate strict type from partial type ?</p>
  
  <pre><code>type Strict&lt;T&gt; = { ??? };
  
  type Person = { name: string; age?: number; }
  type PersonStrict = Strict&lt;Person&gt;; // === { name: string, age: number }
  </code></pre>
  
  <p><strong>What I actually want</strong></p>
  
  <p>I need below 2 types, but don't want to write them twice.</p>
  
  <pre><code>type Person = { name: string, age?: number, /* and other props */ }
  type PersonStrict = { name: string, age: number, /* and other props */ }
  </code></pre>
  
  <p>I found a verbose solution like below, but I want to know there is a better way or not.</p>
  
  <pre><code>type RequiredProps = { name: string, /* and other required props */ };
  type OptionalProps = { age: number, /* and other optional props */ };
  type Person = RequiredProps &amp; Partial&lt;OptionalProps&gt;;
  type PersonStrict = RequiredProps &amp; OptionalProps;
  </code></pre>