Búsqueda de sitios web

typescript - Especificando la longitud de un array en su firma de tipo


¿Cómo especifico la longitud de un Array' en su firma de tipo en TypeScript?

declare const a: Array<any>[20]; // wishful syntax
...
foo(a[10]); // fine
foo(a[100]); // type error: index is out of bounds

Respuesta #1

No puedes, ya que los arreglos no tienen longitud fija. Sobreindexar un arreglo no causará un error en tiempo de compilación.

Esto proviene del hecho de que los arreglos en JavaScript son en realidad solo objetos especiales, con nombres de propiedades más estrictamente definidos y una propiedad extra length. TypeScript solo cambia un aspecto de los arreglos: solo pueden contener un único tipo de elementos.

Respuesta #2

Hoy en día, una alternativa viable, al menos para arreglos pequeños, es el tipo tuple:

declare const t: [boolean, number];
...
t[1] = 5; // fine
t[100] = foo; // error 2493: Tuple type '[boolean, number]' of length '2' has no element at index '100'

Artículos relacionados