É possível exportar funções Arrow em ES6 / 7?


96

A instrução de exportação abaixo fornece um erro de sintaxe

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

porque ?

Só consigo exportar funções nomeadas

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

Qual é a razão?


4
O que o erro realmente diz?
— Andy

2
Funciona bem aqui: astexplorer.net/#/0fv5UXttsP .
— Felix Kling


1
qual é o erro de sintaxe?
— omarjmh

1
Você não pode nomear uma exportação padrão.
— Felix Kling

Respostas:


156

É possível exportar funções Arrow em ES6 / 7?

Sim. exportnão se preocupa com o valor que você deseja exportar.

A instrução de exportação abaixo fornece um erro de sintaxe ... por quê?

Você não pode ter uma exportação padrão e dar um nome a ela ("padrão" já é o nome da exportação).

Tanto faz

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

ou

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

4
Como funciona o seguinte, em seguida, exporte hello = () => {console.log ("why the downvote")}
— jozzy

3
x = yé uma expressão de atribuição que resulta no valor de y. Não é uma declaração de variável. Você pode colocar em x = yqualquer lugar que você possa colocar uma expressão. Nota: Isso irá lançar no modo estrito se xnão for definido de antemão.
— Felix Kling

2
e as exportações regulares? é possível fazer algo como export () => {/*body*/} as getUsers;:? ou tenho que primeiro defini-lo e depois exportá-lo?
— Tomasz Mularczyk

44
@Tomasz:export const getUser = () => {...};
— Felix Kling

3
@Burrich: Não deve importar como uma função foi criada, desde que ela possa ser usada da maneira que deve ser.
— Felix Kling,

13

Se você não quiser uma exportação padrão, pode simplesmente exportar uma função nomeada com esta sintaxe:

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

Então você substitui export function yourFunctionName () {por export const yourFunctionName = () => . O comprimento dos caracteres é o mesmo, mas há uma grande chance de cometer um erro de digitação nesta seção = () =>. Honestamente, para mim parece menos legível e mais trabalhoso :)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.