流类型对象中的动态属性名称

时间:2017-02-11 09:52:49

标签: javascript syntax flowtype

我慢慢地,确定地将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,
};

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:21)

对于行为类似于地图的对象,流量为specific syntax

{ [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,
};

答案 1 :(得分:0)

实际上,在TypeScript中,您可以为密钥使用名称,然后传递密钥的类型:

type User = {
  [key: string | number]: string;
};

在FlowType中,您可以像TypeScript一样进行操作,也可以在没有示例名称的情况下进行操作:

type User = {
  [string | number]: string,
};
相关问题