¿Es posible exportar funciones de Arrow en ES6 / 7?

96

La declaración de exportación a continuación da un error de sintaxis

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

por qué ?

Solo puedo exportar funciones con nombre

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

¿Cuál es la razón?

jozzy
fuente
4
¿Qué dice realmente el error?
Andy
2
Funciona bien aquí: astexplorer.net/#/0fv5UXttsP .
Felix Kling
1
¿cuál es el error de sintaxis?
omarjmh
1
No puede nombrar una exportación predeterminada.
Felix Kling

Respuestas:

156

¿Es posible exportar funciones de Arrow en ES6 / 7?

Si. exportno le importa el valor que desea exportar.

La siguiente declaración de exportación da un error de sintaxis ... ¿por qué?

No puede tener una exportación predeterminada y darle un nombre ("predeterminado" ya es el nombre de la exportación).

O hacer

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

o

const hello = () => console.log("say hello");
export default hello;
Felix Kling
fuente
4
¿Cómo funciona lo siguiente y luego exportar el saludo predeterminado = () => {console.log ("por qué el
voto negativo
3
x = yes una expresión de asignación que se resuelve con el valor de y. No es una declaración de variable. Puede x = yponer una expresión en cualquier lugar. Nota: Esto arrojará en modo estricto si xno está definido de antemano.
Felix Kling
2
¿Qué pasa con las exportaciones regulares? ¿Es posible hacer algo como export () => {/*body*/} as getUsers;:? ¿O primero tengo que definirlo y luego exportarlo?
Tomasz Mularczyk
44
@Tomasz:export const getUser = () => {...};
Felix Kling
3
@Burrich: No debería importar cómo se creó una función siempre que se pueda usar de la forma en que se supone que debe ser.
Felix Kling
13

Si no desea una exportación predeterminada, simplemente puede exportar una función con nombre con esta sintaxis:

export const yourFunctionName = () => console.log("say hello");
Rafael Pinel
fuente
Entonces reemplaza export function yourFunctionName () {con export const yourFunctionName = () => . La longitud de los caracteres es la misma, pero existe una alta probabilidad de cometer un error tipográfico en esta sección = () =>. Honestamente, para mí se siente menos legible y más trabajo :)