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


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;

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");

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 :)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.