Matriz de números mecanografiados sin errores si está vacía

CorePress2024-01-25  10

¿Por qué este código no da ningún error?

type X = number[];

let z: X = [];

Una matriz vacía no es lo mismo que una matriz de números

Cada elemento de la matriz es un número, por lo que no hay ningún problema aquí.

-kaya3

28 de marzo de 2021 a las 1:07



------------------------------------

Los tipos de matriz, como número[], no implican nada sobre la propiedad .length. Simplemente significa que cada elemento de la matriz es un número. si la lentegth es 0, entonces "cada elemento" significa cero elementos. Sin embargo, el indicador numérico sigue siendo útil, ya que define qué tipo de cosas puedes agregar a la matriz.

El tipo [] es en realidad una "tupla" tipo, no solo un tipo de matriz. Las tuplas especifican la propiedad de longitud y el tipo encontrado en cada índice, que puede ser diferente de un índice a otro. [] es una tupla bastante trivial, sin elementos y por lo tanto con una longitud de 0. Si bien las tuplas y las matrices tienen algunas similitudes, los tipos de matriz no se convertirán automáticamente en tipos de tupla.

Entonces, cuando escribes una línea de código como esta:

let x: /**insert type here **/ = [];

Puedes elegir entre varios tipos diferentes, dependiendo de lo estricto que quieras ser. Si desea que la matriz contenga 0 o más números, utilice número[]. Si quieres que tenga una longitud cero array (para siempre), use [].

1

Esta respuesta no incluye el tipo "uno o más".

-0xLogN

28/03/2021 a las 21:38



------------------------------------

La matriz está vacía. Todos los elementos todavía "son" número (no hay ninguno).

Si desea "uno o másnúmero", utilice [número, ...número].

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare