Quería escribir un parámetro de tipo number
, pero escribí mal el tipo, escribiendo en su Number
lugar.
En mi IDE (JetBrains WebStorm) el tipo Number
está escrito con el mismo color que se usa para el tipo primitivo number
, mientras que si escribo el nombre de una clase (conocida o desconocida) usa un color diferente, así que supongo que de alguna manera reconoce el tipo mal escrito como correcto / casi correcto / tipo de tipo correcto.
Cuando compilo el código, en lugar de quejarme, por ejemplo, de que el compilador no pudo encontrar una clase nombrada Number
, TSC escribe este mensaje de error:
Illegal property access
¿Quiere decir que number
y Number
tanto coexiste como diferentes tipos?
Si esto es cierto, ¿cuál es la diferencia entre esas clases?
Si este no es el caso, entonces por qué simplemente no escribió el mismo mensaje de error que muestra para las clases desconocidas ("El nombre 'Número' no existe en el alcance actual")
Este es el código:
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];
}
}