È possibile esportare le funzioni Arrow in ES6 / 7?


96

La seguente dichiarazione di esportazione restituisce un errore di sintassi

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

perché ?

Sono in grado di esportare solo funzioni con nome

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

Qual è la ragione?


4
Cosa dice effettivamente l'errore?
— Andy

2
Funziona bene qui: astexplorer.net/#/0fv5UXttsP .
— Felix Kling


1
qual è l'errore di sintassi?
— omarjmh

1
Non è possibile denominare un'esportazione predefinita.
— Felix Kling

Risposte:


156

È possibile esportare le funzioni Arrow in ES6 / 7?

Sì. exportnon si preoccupa del valore che vuoi esportare.

La seguente dichiarazione di esportazione dà un errore di sintassi ... perché?

Non è possibile avere un'esportazione predefinita e assegnargli un nome ("predefinito" è già il nome dell'esportazione).

O lo fai

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

o

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

4
Come funziona quanto segue, quindi esporta il valore predefinito hello = () => {console.log ("why the downvote")}
— jozzy

3
x = yè un'espressione di assegnazione che si risolve nel valore di y. Non è una dichiarazione di variabile. Puoi mettere x = yovunque tu possa mettere un'espressione. Nota: questo verrà lanciato in modalità rigorosa se xnon è definito in anticipo.
— Felix Kling

2
che dire delle esportazioni regolari? è possibile fare qualcosa come export () => {/*body*/} as getUsers;:? oppure devo prima definirlo e poi esportarlo?
— Tomasz Mularczyk

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

3
@Burrich: Non dovrebbe importare come è stata creata una funzione purché possa essere utilizzata nel modo in cui dovrebbe essere.
— Felix Kling

13

Se non desideri un'esportazione predefinita, puoi semplicemente esportare una funzione denominata con questa sintassi:

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

Quindi sostituisci export function yourFunctionName () { conexport const yourFunctionName = () => . La lunghezza dei caratteri è la stessa, ma c'è un'alta probabilità di fare un errore di battitura all'interno di questa sezione = () =>. Onestamente, a me sembra meno leggibile e più lavoro :)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.