title: Why does TypeScript use "Like" types?
body: <p>Why does TypeScript have a type and then a &quot;like type&quot;? An example of this is <code>Promise&lt;T&gt;</code> and <code>PromiseLike&lt;T&gt;</code>.</p>
  <p>What are the differences between these two types? When should I use them? In this case why not just have one <code>Promise</code> type?</p>