ES6 / 7でアロー関数をエクスポートすることは可能ですか?


96

以下のexportステートメントは構文エラーを示します

export default const hello = () => console.log("say hello")

どうして ?

名前付き関数のみをエクスポートできます

export function hello() {
  console.log("hello")
}

理由は何ですか?


4
エラーは実際に何を言っていますか?
アンディ



1
構文エラーとは何ですか?
omarjmh

1
デフォルトのエクスポートに名前を付けることはできません。
Felix Kling

回答:


156

ES6 / 7でアロー関数をエクスポートすることは可能ですか?

はい。exportエクスポートする値は関係ありません。

以下のexportステートメントは構文エラーを示します...なぜですか?

デフォルトのエクスポートを作成して名前付けることはできません(「デフォルト」はすでにエクスポートの名前です)。

どちらか

export default () => console.log("say hello");

または

const hello = () => console.log("say hello");
export default hello;

4
以下はどのように機能し、デフォルトのhelloをエクスポートするか=()=> {console.log( "why the downvote")}
jozzy

3
x = yの値に解決される割り当て式ですy。変数宣言ではありません。式を置けるx = yところならどこにでも置けます。注:これがx事前に定義されていない場合は、厳密モードでスローされます。
Felix Kling

2
通常の輸出についてはどうですか?次のようなことは可能export () => {/*body*/} as getUsers;ですか?それとも最初に定義してからエクスポートする必要がありますか?
Tomasz Mularczyk 2017年

44
@Tomasz:export const getUser = () => {...};
フェリックスクリング

3
@Burrich:本来の方法で使用できる限り、関数がどのように作成されたかは問題ではありません。
Felix Kling

13

デフォルトのエクスポートが不要な場合は、次の構文で名前付き関数をエクスポートできます。

export const yourFunctionName = () => console.log("say hello");

交換するそうexport function yourFunctionName () {export const yourFunctionName = () => 。文字の長さは同じですが、このセクションでタイプミスをする可能性が高くなり= () =>ます。正直なところ、私には読みにくく、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.