需要帮助理解一些流类型语法
Posted
技术标签:
【中文标题】需要帮助理解一些流类型语法【英文标题】:Need help understanding some Flow type syntax 【发布时间】:2018-06-08 23:48:34 【问题描述】:我正在努力将库 (Relay) 附带的 Flow 类型生成器移植到发出 TypeScript 类型的库中,但对 this snippet 中对我来说并不明显的一些 Flow 语法有一些疑问:
import type FragmentReference from 'relay-runtime';
export opaque type TypenameInside$ref: FragmentReference = FragmentReference;
export type TypenameInside = (|
+__typename: 'User',
+firstName: ?string,
+$refType: TypenameInside$ref,
| | |
+__typename: 'Page',
+username: ?string,
+$refType: TypenameInside$ref,
| | |
// This will never be '%other', but we need some
// value in case none of the concrete values match.
+__typename: '%other',
+$refType: TypenameInside$ref,
|);
即$ref
、$refType
和%other
是什么?或者它们不是特定于流的,而是特定于中继的?
我尝试搜索 flowtype 文档和 repo,但很难找到答案。链接到文档和/或实现的相关部分也将不胜感激。
【问题讨论】:
@halfer 完成,感谢提醒???? 【参考方案1】:$ref
、$refType
等是普通类型名称。
类型的 $
前缀是表示实用程序类型(例如 $Keys
)的约定,但此处似乎没有遵循约定。
%other
只是一个普通的字符串。 Relay 可能在内部将字符串用于某些特殊目的。
【讨论】:
$ref
是变量名的一部分。完整的变量名称是TypeNameInside$ref
。对于 JS 解释器/流服务器,$
没有什么特别之处——它只是另一个字符。以上是关于需要帮助理解一些流类型语法的主要内容,如果未能解决你的问题,请参考以下文章
我需要帮助理解与实体框架上下文的第一种方法相关的 C# 语法 [重复]