É 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?

jozzy
fonte
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;
Felix Kling
fonte
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");
Raphael Pinel
fonte
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 :)