繁体   English   中英

JS Flow:定义枚举也被视为类型的最简洁明了的方法是什么

[英]JS Flow: What is the most clean and concise way to define an enum that is also treated like a type

我来自一种强类型语言,最近我开始使用React Native。 我正在使用Flow作为静态类型检查器。 但是,我还没有找到一种简洁明了的方法来定义一个枚举类型,该枚举类型被视为一种类型并触发“编译器”向我建议VS Code中可能的值。

目前,我尝试通过以下方式完成此操作

export const CompletionStates = {
    CompletionStateUnbegun: 'unbegun',
    CompletionStateRunning: 'running',
    CompletionStateLost: 'lost',
    CompletionStateWon: 'won',
    CompletionStateCancelled: 'cancelled',
}

export type CompletionState = 
    | CompletionStates.CompletionStateUnbegun 
    | CompletionStates.CompletionStateRunning  
    | CompletionStates.CompletionStateLost 
    | CompletionStates.CompletionStateWon 
    | CompletionStates.CompletionStateCancelled;

有谁知道使用Flow定义枚举的更简洁明了的方法。

您可以使用$ Values:

type CompletionStates = {
    CompletionStateUnbegun: 'unbegun',
    CompletionStateRunning: 'running',
    CompletionStateLost: 'lost',
    CompletionStateWon: 'won',
    CompletionStateCancelled: 'cancelled',
};

export type CompletionState = $Values<CompletionStates>;

目前,我通过以下方式定义枚举

您在此处定义了consttype 您还可以直接定义一个enum

export enum Animals {
  DOG = "Dog", 
  CAT = "cat"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM