web-dev-qa-db-ja.com

別のファイルからインポートされたフロータイプ定義をどのようにエクスポートしますか?

別のモジュールからインポートされた型定義がある場合、それをどのように再エクスポートしますか?

/**
 * @flow
 */

import type * as ExampleType from './ExampleType';

...

// What is the syntax for exporting the type?
// export { ExampleType };
18
ide

この質問の最も単純な形式は、「タイプエイリアスをエクスポートするにはどうすればよいですか?」です。簡単な答えは「with export type!」です

あなたの例では、あなたは書くことができます

/**
 * @flow
 */

import type * as ExampleType from './ExampleType';
export type { ExampleType };

ExampleTypeがタイプエイリアスなのはなぜですか?」さて、あなたが書くとき

type MyTypeAlias = number;

タイプエイリアスMyTypeAliasを明示的に作成しています。このエイリアスはnumberです。そしてあなたが書くとき

import type { YourTypeAlias } from './YourModule';

YourModule.jsYourTypeAliasエクスポートをエイリアスするタイプエイリアスYourTypeAliasを暗黙的に作成しています。

32
Gabe Levi

以下はうまく動作します

export type { Type } from './types';
15
locropulenton

受け入れられた答えは古く、私の側に警告を投げています。ビューの量を考慮して、フロー0.10+と互換性のある更新された回答を次に示します。

MyTypes.js:

  export type UserID = number;
  export type User = {
    id: UserID,
    firstName: string,
    lastName: string
  };

User.js:

  import type {UserID, User} from "MyTypes";

  function getUserID(user: User): UserID {
    return user.id;
  }

ソース

8
Gunther

私は、@ locropulentonの答えに基づいて、ES6のデフォルトクラスに対してこれを実行するために必要な1行を見つけました。あなたが持っていると仮定します

// @flow

export default class Restaurants {}

Restaurants.jsファイル内。同じディレクトリのindex.jsファイルからエクスポートするには、次のようにします。

export type {default as Restaurants} from './Restaurants';
1
James Ko