title: Typescript primitive types: any difference between the types "number" and "Number" (is TSC case-insensitive)?
body: <p>I meant to write a parameter of type <code>number</code>, but I misspelled the type, writing <code>Number</code> instead. </p>
  
  <p>On my IDE (JetBrains WebStorm) the type <code>Number</code> is written with the same color that is used for the primitive type <code>number</code>, while if I write a name of a class (known or unknown) it uses a different color, so I guess that somehow it recognizes the misspelled type as a correct/almost-correct/sort-of-correct type.</p>
  
  <p>When I compile the code, instead of complaining for example that the compiler couldn't found a class named <code>Number</code>, TSC writes this error message: </p>
  
  <pre><code>Illegal property access
  </code></pre>
  
  <p>Does that mean that <code>number</code> and <code>Number</code> both co-exists as different types?</p>
  
  <p>If this is true, which is the difference between those classes?</p>
  
  <p>If this is not the case, then why it simply didn't write the same error message it displays for unknown classes ("The name 'Number' does not exist in the current scope")</p>
  
  <p>This is the code:</p>
  
  <pre><code>class Test
  {
      private myArray:string[] = ["Jack", "Jill", "John", "Joe", "Jeff"];
  
      // THIS WORKS
      public getValue(index:number):string
      {
          return this.myArray[index];
      }
  
      // THIS DOESN'T WORK: ILLEGAL PROPERTY ACCESS
      public getAnotherValue(index:Number):string
      {
          return this.myArray[index]; 
      }
  }
  </code></pre>