title: Recursive Partial<T> in TypeScript
body: <p>I have this interface:</p>
  
  <pre><code>export interface UserSettings
  {
      one: {
          three: number;
          four: number;
      };
      two: {
          five: number;
          six: number;
      };
  }
  </code></pre>
  
  <p>...and want to turn it into this:</p>
  
  <pre><code>export interface UserSettingsForUpdate
  {
      one?: {
          three?: number;
          four?: number;
      };
      two?: {
          five?: number;
          six?: number;
      };
  }
  </code></pre>
  
  <p>...but <code>Partial&lt;UserSettings&gt;</code> produces this:</p>
  
  <pre><code>{
      one?: {
          three: number;
          four: number;
      };
      two?: {
          five: number;
          six: number;
      };
  }
  </code></pre>
  
  <p>Is it possible to use mapped types to make all the properties on all depths optional, or do I have to create an interface manually for that?</p>