2015-05-09 27 views
31

Sto giocando con Typescript e mi chiedo come istanziare e dichiarare correttamente l'array multidimensionale. Ecco il mio codice:Typescript - inizializzazione di array multidimensionali

class Something { 
    private things: Thing[][]; 

    constructor() { 
     things = [][]; ??? how instantiate object ??? 

     for(var i: number = 0; i < 10; i++) { 
      this.things[i] = new Thing[]; ??? how instantiate 1st level ??? 
      for(var j: number = 0; j< 10; j++) { 
       this.things[i][j] = new Thing(); ??? how instantiate 2nd lvl item ??? 
      } 
     } 
    } 
} 

Potete darmi qualche suggerimento sui luoghi selezionati?

risposta

48

È necessario solo [] per creare un'istanza di un array, questo è vero indipendentemente dal suo tipo. Il fatto che la matrice sia di un tipo di matrice è irrilevante.

La stessa cosa si applica al primo livello del ciclo. È semplicemente un array e [] è un nuovo array vuoto - lavoro fatto.

Per quanto riguarda il secondo livello, se Thing è una classe allora new Thing() andrà bene. Altrimenti, a seconda del tipo, potresti aver bisogno di una funzione di fabbrica o di un'altra espressione per crearne una.

class Something { 
    private things: Thing[][]; 

    constructor() { 
     things = []; 

     for(var i: number = 0; i < 10; i++) { 
      this.things[i] = []; 
      for(var j: number = 0; j< 10; j++) { 
       this.things[i][j] = new Thing(); 
      } 
     } 
    } 
} 
+0

Non riesco a immaginare, come tipizzazioni sono conservati qui. Puoi darmi qualche esempio, per favore? – Fka

+2

Ci sono 0 elementi nella matrice, quindi non c'è alcun valore o oggetto da digitare. – Puppy

0

c'è un tipo giusto? voi significa forse come this

0

Se si vuole farlo digitato:

class Something { 

    areas: Area[][]; 

    constructor() { 
    this.areas = new Array<Array<Area>>(); 
    for (let y = 0; y <= 100; y++) { 
     let row:Area[] = new Array<Area>();  
     for (let x = 0; x <=100; x++){ 
     row.push(new Area(x, y)); 
     } 
     this.areas.push(row); 
    } 
    } 
} 
+0

Grazie, ma non tutti utilizzano AngularJs per scrivere codice JS/TS. – Fka

Problemi correlati