如何在流类型中将枚举的类型重构为泛型?

时间:2018-08-08 18:45:24

标签: reactjs generics flowtype static-typing flow-typed

想象一下,我有3个枚举类型为{[key: string]: Type}的枚举,这很普遍,我认为最好有一个泛型来减少重复次数,但是我不确定如何做到这一点: 我在想这样的事情:

export interface KeyType<T> {
  [key: string]: T;
}

并像这样使用它:

KeyType<HeadingOptionType>

但是它不起作用:(。

在下面的示例中,如何编写一个写入类型来删除{[key: string]}重排?

export const HeadingOption: {[key: string]: HeadingOptionType} = {
  H1: 1,
  H2: 2,
  H3: 3,
  H4: 4,
  H5: 5,
  H6: 6,
};

export const EnumColumn: {[key: string]: EnumColumnType} = {
  C1: 1,
  C2: 2,
  C3: 3,
  C4: 4, // not supported yet but should be.
};

export const RtlMirror: {[key: string]: RtlMirrorType} = {
  ON: true,
  OFF: false,
};

1 个答案:

答案 0 :(得分:1)

我想您在索引器属性方面遇到错误。您可以通过更改接口以键入别名import { Component,ViewChild } from '@angular/core'; @ViewChild(Nav) nav: NavController; 来摆脱它。

无论如何,我认为这种类型的输入不是有用的,因为您需要手动定义值类型。描述枚举的流程中的常见做法是:

type KeyType<T> = { [string]: T };