2012-11-24 30 views
8

Spesifikasyonların 3.5.4 bölümü şu şekildedir: "ElementType [] biçimindeki bir dizi türü, dizin imzası [index: number]: ElementType" olan bir nesne türüne eşdeğerdir, ancak bu durum örn.Nesne dizin imzaları dizi türlerine eşdeğer mi?

var a: {[index: number]: string;}; 
var b: string[]; 
a = ['1','2']; // ERROR: Cannot convert 'string[]' to '{ [index: number]: string; }' 
b = ['1','2']; // OK 

Burada nelerin eksik?

+0

olası yinelemesi [sayı için indeks arabirimini tanımlamak mümkündür [[]] [http://stackoverflow.com/questions/13074851/possible-to-define-indexer-interface-for-number) –

+0

İş öğesi : http://typescript.codeplex.com/workitem/331 –

+0

Doğru olduğunu düşünüyorum, bu aynı sorundur (indeksli türler Arrays'e eşdeğer değildir), görünüme aykırıdır. Örnek ödevimi yalnızca bir yayınla çalışmak için alabilirdim: a = ['1', '2']; ' –

cevap

1

Evet, bu, derleyicide bilinen bir hatadır. Gelecekteki bir sürümde düzeltilecek. En iyi çözüm, bir dökümdür (ödevin her iki tarafında - a = <string[]>['1', '2'] muhtemelen biraz daha az tuhaf görünüyor).