2013-04-07 24 views
13

In TypeScript, qual è la differenza tra Array e any[]? Array si riferisce a array di dimensioni dinamiche (durante la compilazione, ovviamente) e any[] si riferiscono a array di dimensioni statiche passati come argomenti e desunti dal compilatore? Poiché attualmente quando ho funzioni quali:Array dattiloscritto rispetto a qualsiasi []

mergeArrays(arr1 : Array, arr2 : Array); 

Quando si chiama questa funzione con dati statici, dattiloscritto utilizza una matrice tipizzato (type[]).

mergeArrays([true, false], [1, 2]); 
//   bool[]   number[] 

Quindi ci sono differenze in fase di compilazione di tempo tra il 2? Quando uso any[] e quando uso Array? A volte la definizione di Vars con Array ..

var info:Array; 

..show errori come "non in grado di convertire qualsiasi [] [] per array" quando si imposta come segue:

info = [[], []]; 

risposta

8

sezione Spec 3.5.4 specifica il loro rapporto :

un tipo di matrice della maschera ElementType[] è equivalente a un tipo di oggetto con la firma dell'indice [index: number]: ElementType più un insieme di membri equivalente al ty interfaccia globale pe Array dove tutte le occorrenze del tipo magico _element vengono sostituite con ElementType.

Non essendo in grado di assegnare [[], []] o []-Array è un bug.

Non esiste alcuna nozione di matrice "di dimensioni statiche" in TypeScript. Stanno tutti parlando dello stesso array JavaScript sottostante (che ha dimensioni dinamiche):

var x = [1, 2]; 
x.push(3); 
x[13] = 5; 
Problemi correlati