title: Describe only shape of an object in typescript, but ignore the types
body: <p>I want to describe the following object shape in typescript, but I want to ignore the types of the fields.</p>
  
  <pre><code>interface TestInterface {
    TestOne?: string;
    TestTwo?: number;
    TestThree?: boolean;
  }
  </code></pre>
  
  <p>My idea was to describe it in the following way:</p>
  
  <pre><code>type Shape = { [fieldName: string]: any };
  
  type ShapeType&lt;TShape extends Shape&gt; = TShape;
  
  var test: ShapeType&lt;TestInterface&gt; = {
    TestThree: "asdf",
  }
  </code></pre>
  
  <p>It should complain about something like:</p>
  
  <pre><code>var test: ShapeType&lt;TestInterface&gt; = {
      TestThree: "asdf",
      TestFour: "123",
  }
  </code></pre>
  
  <p>If I typecast "asdf" to any it works. Is there a way to describe this in a way that casting is not needed?</p>
  
  <p>Edit: The idea behind it is to have a shape that is normally used for data exchange but on special occations it will be used for metadata. In those cases I only care about the structure, but not about the type (at least for now - the idea would be to change the types of the shape to another given type).</p>