从流程文档中我们得到了:
// @flow
const countries = {
US: "United States",
IT: "Italy",
FR: "France"
};
type Country = $Keys<typeof countries>;
const italy: Country = 'IT';
const nope: Country = 'nope'; // 'nope' is not a Country
但我想做
type CountryValue = $Values<typeof countries>
const italy: CountryValue = 'Italy'; // yes
这可能吗?
答案 0 :(得分:3)
您可以使用$Values
进行排序,但您还需要执行更多操作,因为目前countries
中的值仅被检测为任何string
。如果告诉flow只允许某些值,那么它可以工作:
type FullNames = "United States" | "Italy";
const countries: {[key: string]: FullNames} = {
US: "United States",
IT: "Italy"
};
const nope: $Values(typeof countries) = 'nope'; // 'nope' is not in the value type
我猜这不是完全你想要什么,因为它需要明确添加类型,但它是可行的。