2017-12-28 11 views
4

ライブラリ(Relay)に付属のフロータイプジェネレータをTypeScriptタイプに移植する作業を進めていますが、わかりやすいフロー構文についていくつか質問がありますthis snippetいくつかのフロータイプの構文を理解する助けが必要です

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のdocsとrepoを検索しようとしましたが、答えには非常に困難な時間がありました。ドキュメントや実装の関連部分へのリンクも高く評価されます。

+1

@halfer完了、ありがとうございました – alloy

答えて

4

$ref,$refTypeなどは通常の型名です。

タイプの接頭辞$は、$Keysなどのユーティリティタイプを示すための規則ですが、ここではその規則に従わないようです。

%otherは通常の文字列です。 Relayはおそらく内部的に何らかの特殊目的のために文字列を使用します。

+0

'$ ref'は変数名の一部です。完全な変数名は 'TypeNameInside $ ref'です。 JSインタプリタ/フローサーバには、 '$'について特別なものは何もありません。それはちょっと別の文字です。 –

関連する問題