Quería escribir un parámetro de tipo number, pero escribí mal el tipo, escribiendo en su Numberlugar.
En mi IDE (JetBrains WebStorm) el tipo Numberestá 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 numbery Numbertanto 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];
}
}
fuente

Para aumentar la respuesta de Ryan con la orientación de lo que se debe y no se debe hacer en TypeScript :
fuente
[]para denotar tipos de matriz. Sin embargo, puede haber excepciones, no estoy seguro.Como dice el documento de TypeScript:
var Number: NumberConstructor (value?: any) => numberComo dice, tome
anycomo parámetro y devuelva el número onullOfrece una forma sencilla de comprobar si un valor es un número o no
Number("1234"); // 1234 Number("1234.54") // 1234.54 Number("-1234.54") // -1234.54 Number("1234.54.33") // null Number("any-non-numeric") // nullAsí que simplemente podemos usar para verificar el número, como:
if(Number(val)){ console.log('val is a number'); } else { console.log('Not a number'); }fuente