Étant donné qu'une définition de type est importée d'un autre module, comment la réexporter?
/**
* @flow
*/
import type * as ExampleType from './ExampleType';
...
// What is the syntax for exporting the type?
// export { ExampleType };
La forme la plus simple de cette question est "comment exporter un alias de type?" et la réponse simple est "avec export type
!"
Pour votre exemple, vous pouvez écrire
/**
* @flow
*/
import type * as ExampleType from './ExampleType';
export type { ExampleType };
Vous pouvez vous demander "pourquoi ExampleType
est-il un alias de type?" Eh bien, quand vous écrivez
type MyTypeAlias = number;
Vous créez explicitement le type alias MyTypeAlias
, lequel alias number
. Et quand tu écris
import type { YourTypeAlias } from './YourModule';
Vous créez implicitement le type alias YourTypeAlias
qui alias l’export YourTypeAlias
de YourModule.js
.
Cela fonctionne
export type { MyType } from './types';
Edit: Obtenir cette syntaxe à partir de la manière dont elle est utilisée dans react-native-tab-view
La réponse acceptée est ancienne et jette des avertissements de ma part. Compte tenu du nombre de vues, voici une réponse mise à jour compatible avec le flux 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;
}
Je viens de trouver qu'il est nécessaire que one-liner effectue cela pour les classes par défaut ES6, en s'appuyant sur la réponse de @ locropulenton. Supposons que vous ayez
// @flow
export default class Restaurants {}
dans un fichier Restaurants.js
. Pour l'exporter d'un fichier index.js
du même répertoire, procédez comme suit:
export type {default as Restaurants} from './Restaurants';