title: Is there a type that essentially acts as a non-primitive any
body: <p>Is there a way to set a type that will act like <code>any</code>, but will not allow primitive values to be assigned?</p>
  
  <pre><code>type Demogorgon = { friendly: boolean };
  const sarah: Demogorgon = { friendly: true };
  const duck = 'is in the upside down';
  
  let anyNonPrimitive: any;   // What type can replace 'any' and make the following comments true?
  
  anyNonPrimitive = duck;     // should fail assignment    
  anyNonPrimitive = sarah;    // should allow assignment
  
  console.log(anyNonPrimitive.friendly);  // property 'friendly' should be accessible
  console.log(anyNonPrimitive.unicorns);  // does not cause type error, returns undefined
  </code></pre>