Подтвердить что ты не робот

Динамические имена свойств в потоковом типе

Я медленно и уверенно работаю flowType в свой код, но я борюсь с одной концепцией.

Как указать тип неизвестных, динамически именованных свойств объекта?

Например, у моего пользовательского объекта может быть объект, содержащий организации с уникальными ключами.

Как бы это определить?

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

Было бы очень полезно помочь в этом. Спасибо!

4b9b3361

Ответ 1

Flow имеет специфический синтаксис для объектов, которые ведут себя как карты:

{ [key: K]: V }

где K - это тип ключей, а V - тип значений.

Ваш полный пример будет выглядеть так:

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