Soru TypeScript - Sabit uzunluk Dizisi tipi?


TypeScript türlerini çevreleyen bilgi eksikliğimi gösterme riskinde - aşağıdaki sorularım var.

Böyle bir dizi için bir tür beyanı yaptığınızda ...

position: Array<number>;

... keyfi uzunlukta bir dizi yapmanıza izin verecektir. Bununla birlikte, belirli bir uzunluğa sahip sayıları içeren bir dizi istiyorsanız, yani x için 3, y, z bileşenleri, sabit uzunluktaki bir dizi için böyle bir şey yapabilir misiniz?

position: Array<3>

Herhangi bir yardım veya açıklama takdir!


25
2017-12-14 10:04


Menşei




Cevaplar:


Javascript dizisinde dizinin uzunluğunu kabul eden bir kurucu vardır:

let arr = new Array<number>(3);
console.log(arr); // [undefined × 3]

Ancak, bu sadece başlangıç ​​boyutudur, bunu değiştirmenin bir kısıtlaması yoktur:

arr.push(5);
console.log(arr); // [undefined × 3, 5]

Türleri vardır tuple çeşitleri Belirli bir uzunluk ve türler içeren bir dizi tanımlamanıza olanak tanır:

let arr: [number, number, number];

arr = [1, 2, 3]; // ok
arr = [1, 2]; // Type '[number, number]' is not assignable to type '[number, number, number]'
arr = [1, 2, "3"]; // Type '[number, number, string]' is not assignable to type '[number, number, number]'

52
2017-12-14 10:19



Mükemmel cevap - mükemmel çalışıyor - henryJack
Tuple türleri sadece başlangıç ​​büyüklüğünü kontrol eder, böylece sınırsız sayıda "sayı" nı arr başlatıldıktan sonra. - benjaminz
Doğru, bu noktada hala "herhangi bir şey" için çalışma zamanında javascript var. En azından, kaynak koddaki kod yazıcısı bunu en azından zorlayacak - henryJack