2017-02-23 35 views
12

Akış? Kullanarak fromJS tarafından oluşturulan bir Immutable.JS veri yapısının şeklini nasıl kontrol edersiniz?Akış: JS() kullanılarak karmaşık bir Immutable şekli mi kontrol ediliyor?

  1. O Immutable anlaşılmaktadır: Immutable.js tarafında, iki büyük komplikasyon orada görünmek,

    type ObjectShape = { 
        a: number, 
        b: string, 
        c: { 
        d: number, 
        }, 
        e: Array<number> 
    }; 
    
    const obj: ObjectShape = { // hyper-accurate 
        a: 1, 
        b: '2', 
        c: { 
        d: 3, 
        }, 
        e: [4] 
    } 
    

    Ancak: Düz eski JS lekeler bir nesne değişmezi gösterimi kullanılarak çok doğru yazılabilir js en fromJS yöntem any (https://github.com/facebook/immutable-js/blob/master/type-definitions/immutable.js.flow#L764) döndürür, böylece aşağıdaki Akış bir hata olarak yakalandı değildir:

    const map: boolean = fromJS(obj) // this is totally not true, but Flow can't tell 
    
  2. Harita şekillerinin How to describe Immutable.js Map shape with Flow'a göre nesne benzeri bir notasyon kullanılarak tanımlanamayacağı anlaşılıyor (ya da bu bilgiler eski mi?).

Özellikle Immutable.js'yi, özellikle de haritaları anlamak için Flow'u nasıl kullanacağım konusunda gerçekten kafam karıştı. Anlayabildiğim kadarıyla Flow, veri JS JSF'nin yerine Immutable.js yapıları içinde yaşadığında, kod tabanı hakkında çok fazla zeka kaybeder.

+0

https://github.com/flowtype/flow-typed hakkında, sadece Map type defintion'u yükleyebilirsiniz –

+0

Akış tipinde immutabe.js için tanım yoktur, bunlar doğrudan immutable.js ile birlikte verilir npm'den paket. Ancak, şu anda immutable.js ile verilen Harita tanımı, bir şekil tanımlamanıza izin vermiyor gibi görünmektedir: https://github.com/facebook/immutable-js/blob/master/type-definitions/immutable.js.flow# L489 –

cevap

0

Sen teorik o statik olarak gerçek üyelere bu değişmez-js yapının yazarak olur ne yazık ki olmaması dışında typechecking eklemek sonra beklenen şekil ve kodlanmış bir Record() ...

kullanması gerekir akışta eksik olan certainfeatures yüzünden mümkündür.

anda typechecker için gerekli özellikler eklemek için açık çek istekleri (first, second) bir çift vardır, ancak bunlar oldukça ilgili ve gözden geçirilmesi ve bunları birleştirme süreci Facebook'ta en içten oluyor gibi görünüyor.

Bunlar birleştirildiğinde, değişmez-js projesi bunları hızlı bir şekilde entegre etmese bile yeni sıcaklığı kodlayan akış tipi tanımların hemen hemen tamamlanacağından şüpheleniyorum.

Not: Geri bildirim sağlamak isterseniz lütfen "+1" veya "yorum yapıldığında ne zaman" ayrılmayın; Bunlar bu depo için kabul edilen stil değildir. Bunun yerine tepki/oylama özelliğini kullanın.

+1

PR'lerin kapalı olduğunu görüyorum. Bunu nasıl yapabileceğinize dair herhangi bir örnek, şimdi mümkün mü? –

+1

Bu PR'lerin yerine, akış arkadaşlarının ulaştığı çözüm, gerekli özelliklere sahip bir * yeni * tipi işlev, $ ElementType eklemekti. Bakınız örn. https://flow.org/try/#0C4TwDgpgBA0hJQLxQOQGt4oNwChSSgBUkoBvKDEALigDsBXAWwCMIAnKAX1wBMIBjADYBDNtABuoqGDYB7MDQAkAUUERGEWsELgIAHkIAaOCAB8uIA – azernik

İlgili konular