2016-12-16 11 views
5

Varolan bir kod için tür ek açıklamaları eklemeye çalışıyorum ve üzerinde ayarlanmış özel özellikleri olan bir nesne olarak ikiye katlanan bir Array örneğim var. Yani gibi:Dizileri özel özelliklerle ek açıklama yapmak mümkün mü?

type SuperArray = Array<number> & { 
    superLevel: string, 
} 
const foo: SuperArray = []; 
// ... 

(View on flowtype.org/try)

Ama bu da işe yaramazsa:

const foo = []; 
foo[0] = 13; 
foo.push(42); 

foo.superLevel = 'extreme'; // Flow complains about this 

Ben bu çizgisinde yeni bir SuperArray denilen türü, bir şeyler beyan düşündüm. Goggled ve belgelere göz attım ve

A) ile ilgili bir yanıt bulamadı mı? Bu destekleniyor mu?
B) öyleyse, nasıl açıklama eklenir?

cevap

1

Birisi yardımsever ve bilgilendirici bir yanıtı (oylama yaptığım) yayınladı, ancak kaybolacak gibi görünüyor - belki de güzel bir çözüm sunmasına rağmen orijinal soruyu tam olarak yanıtlamadığını belirttim.

neyse, onlar Bu bir güzel, temiz yolu Array uzanır ve sahne ekleyen bir sınıf olarak SuperArray tanımlamak için kod ...

class SuperArray extends Array<number> { 
    superLevel: string 
} 

const foo = new SuperArray(); 

(Explore on Flowtype.org/try)

yeniden önerdi, ama ben Özgün paternin açıklanmasının mümkün olup olmadığını bulmakla ilgilenmekteydi - örneğin bir üçüncü taraf modülü tanımlamak için bağımsız bir deklarasyon yazmanın sınırlı olduğu durumlarda.

+1

Yanıt benden geldi ve tam olarak sizin adınız nedeniyle sildim. Eğer uygun değilse, cevabı daha iyi anlatabilmem için cevabı daha iyi kullanmam gerektiğini düşündüm. – Tomalak

+0

Ah, anlıyorum. Bununla birlikte, alternatif yaklaşımları belgelemek de yararlıdır. –