web-dev-qa-db-fra.com

Noms de propriétés dynamiques dans un objet de type flux

Je travaille lentement et sûrement flowType dans mon code, mais je me bats avec un concept.

Comment spécifier le type de propriétés inconnues et nommées dynamiquement d'un objet?

Par exemple, mon objet utilisateur peut avoir un objet contenant des organisations avec des clés uniques.

Comment pourrais-je définir cela?

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

J'apprécierais vraiment toute aide à ce sujet. Merci!

22
Sam Matthews

Le flux a syntaxe spécifique pour les objets qui se comportent comme des cartes:

{ [key: K]: V }

K est le type des clés et V est le type des valeurs.

Votre exemple complet ressemblerait à ceci:

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