2017-02-11 17 views
6

Powoli i pewnie pracuję w typie flowType w moim kodzie, ale zmagam się z jedną koncepcją.Dynamiczne nazwy właściwości w obiekcie typu flow

Jak określić typ nieznanych, dynamicznie nazwanych właściwości obiektu?

Na przykład mój obiekt użytkownika może zawierać obiekt zawierający organizacje z unikalnymi kluczami.

Jak zdefiniować to?

export type User = ?{ 
    currentOrg: string, 
    displayName?: string, 
    email: string, 
    emailVerified: boolean, 
    newAccount: boolean, 
    organisations?: { 
    UNKNOWNKEY?: string { 
     orgData1: string, 
     orgData2: string, 
    } 
    }, 
    uid: string, 
    photoUrl?: string, 
}; 

Naprawdę doceniam każdą pomoc w tej sprawie. Dzięki!

+0

Na marginesie, to nie jest dobra praktyka, aby określić typ jako pustych w jego definicji. Prawdopodobnie nie chcesz, aby 'null' było poprawną wartością dla' User' _everywhere_, której typ jest używany. Znacznie lepiej jest się zdecydować, aby pewne zastosowania "użytkownika" były nieważne. na przykład 'typ Bug = {createdBy: User, assignedTo:? User}'. –

+0

Wielkie dzięki. Tak, zauważyłem to samo z perspektywy czasu i stworzyłem dwa typy, NullableUser i DefiniteUser, które mają albo typ użytkownika lub użytkownika. W ten sposób dla większości mojego kodu mogę używać typu DefiniteUser. –

Odpowiedz

6

Flow ma specific syntax dla obiektów, które zachowują się jak mapy.

Pełne Przykładem może wyglądać następująco:

export type User = { 
    currentOrg: string, 
    displayName?: string, 
    email: string, 
    emailVerified: boolean, 
    newAccount: boolean, 
    organisations?: { [key: string]: string }, 
    uid: string, 
    photoUrl?: string, 
}; 
+0

Ach, widzę. To jest świetne, dziękuję! –

Powiązane problemy