title: Why do the length properties of arrays and strings have different return types?
body: <pre><code>type GetLength2&lt;T extends any[]&gt; = T['length']
  type a = GetLength2&lt;[1]&gt; // 1
  
  type GetLength3&lt;T extends string&gt; = T['length']
  type e = GetLength3&lt;'abc'&gt; // number
  </code></pre>
  <p>The length property of an array returns a specific value, but the length property of a string returns a number type, why?</p>