2016-03-28 22 views
3

Bir React projesinde MobX kütüphanesi ile oynuyorum. Yapabildiğiniz tek şey, kodunuzu ilkellerle çalıştığınız gibi yazmaktır, ancak başlık altında MobX bazı gözlenebilir büyüler yapıyor. Ben de bu projede Flow kullanıyorum ve en az iki ekstra yönteme sahip olan ve değiştirilen MobX gözlemlenebilir dizilerine uygulanacak doğru sözdizimini anlamaya zorlanıyorum.Akış tipi denetleyicisi ile bir diziyi nasıl genişletirim?

Bu kodun TS dosyası oldukça derin ve yazım için oldukça yeni. TS dosyası burada bulunabilir: Ben çalışacaktır Akış denedim sözdizimi

https://github.com/mobxjs/mobx/blob/master/src/types/observablearray.ts

Yok, muhtemelen tüm cahil/oldukça naif.

interface ObservableArray { 
    join(str: string): string; 
    replace(arr: Array<any>): ObservableArray; 
    map(mapFunction: Function): Array<any>; 
    reduce(reducerFunction: Function, initialValue: any): any; 
    peek(): Array<any>; 
} 

type MobxArray = ObservableArray; 

veya

interface ObservableArray extends Array { 
    peek(): Array<any>; 
    replace(arr: Array<any>): MobxArray<any>; 
} 

type MobxArray = ObservableArray; 

bu hatayı alıyorum Çoğu zaman "polimorfik tipi yerine türündeki 'MobxArray' Beklenen."

type MyComponentProps = { 
    myArray: MobxArray<string>; 
}; 

const MyComponent = observer(({ myArray }: MyComponentProps) => (
    <div>{ ... code ... }</div> 
)); 

cevap

4
muhtemelen uzun zaman önce bu çözümü vardı

ama benim ESLint yapılandırma şikayetçi oldu ve ben muhtemelen bu sonuçları nedeniyle kontrol akış asla: Ben bir bileşen için sahne ilan etmeye çalışıyorum bu hatayı alıyorum undef hatası. Ben typescript .d.ts dosyaların otomatik dönüşüm akmaya mi bilmiyorum

interface MobxArray<V> extends Array<V> { 
    replace(arr: Array<V>): MobxArray<V>; 
    peek(): Array<V>; 
} 
2

mümkündür, ancak paketin kendisi içine bakarsanız, lib .d.ts dosyalarında tüm arayüzleri bulacaksınız/dizin, muhtemelen dönüştürme işlemini kolaylaştırır (bunlar yapı sırasında oluşturuldukları gibi github'ta değildir)

Düzenleme: Arabirimler için akış sözdizimi, doğrudan mobx/lib/index.d.ts dosyasına yönlendirebilirsiniz. oldukça benzer görünüyor.

+0

Bu soru sorulduğundan, mobx akış akışını gönderdiler mi? Yaptıklarımın duyduğunu duydum ama bu belgeyi bulamıyorum – Jeff

+0

Evet öyle: https://github.com/mobxjs/mobx#flow-support – mweststrate

İlgili konular