tutorial official language handbook example documenting con typescript tsc

language - typescript official documentation



Tipos primitivos de tipografía: cualquier diferencia entre los tipos "número" y "número"(¿TSC no distingue entre mayúsculas y minúsculas)? (2)

JavaScript tiene la noción de tipos primitivos (número, cadena, etc.) y tipos de objetos (Número, Cadena, etc., que se manifiestan en el tiempo de ejecución). El number y el number tipos de TypeScript se refieren a ellos, respectivamente. JavaScript generalmente forzará un tipo de objeto a su equivalente primitivo, o viceversa:

var x = new Number(34); > undefined x > Number {} x + 1 > 35

Las reglas del sistema de tipo TypeScript tratan esto (especificación sección 3.7) de esta manera:

Para determinar las relaciones de subtipo, supertipo y compatibilidad de asignación, los tipos de primitiva Número, Booleano y Cadena se tratan como tipos de objetos con las mismas propiedades que las interfaces ''Número'', ''Booleano'' y ''Cadena'', respectivamente.

Me refería a escribir un parámetro de tipo number , pero escribí mal el tipo, escribiendo el Number lugar.

En mi IDE (JetBrains WebStorm), el tipo Number está escrito con el mismo color que se utiliza para el number tipo primitivo, mientras que si escribo el nombre de una clase (conocida o desconocida) utiliza un color diferente, así que supongo que de alguna manera reconoce el tipo incorrectamente escrito como correcto / casi correcto / tipo correcto.

Cuando compilo el código, en lugar de quejarme, por ejemplo, de que el compilador no pudo encontrar una clase llamada Number , TSC escribe este mensaje de error:

Illegal property access

¿Eso significa que el number y el Number ambos coexisten como tipos diferentes?

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]; } }


Para aumentar la respuesta de Ryan con la orientación de lo que se debe y no se debe hacer en TypeScript :

Nunca use los tipos Number, String, Boolean u Object. Estos tipos se refieren a objetos en caja no primitivos que casi nunca se usan apropiadamente en el código JavaScript.

/* WRONG */ function reverse(s: String): String;

Utilice los números number, string y boolean.

/* OK */ function reverse(s: string): string;