title: What is the need of optional members in typescript interface?
body: <p>I'm following an online typescript tutorial (not in english, but I'll traslate the example):</p>
  
  <pre><code>interface Message { 
      email: string; 
      receiver?: string; 
      subject?: string; 
      content: string; 
  }
  </code></pre>
  
  <p>The explanation of the <code>?</code> is that it's used to make proprerties <em>optional</em>. 
  The question (that my tutorial doesn't answers) is: if the interface is defined in TS to estabilish a <em>contract</em> to assure that some properties are always present, what is the usefulness to make them <em>optional</em>? Because additional (and then, optional) properties can be handled at object/class definition level instead.</p>
  
  <p>For example, I understand optional methods in <em>Java</em> interfaces, because they have a default method body that can be reused in implementing classes. But there, at first sight, seems a little nonsense.</p>