È 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.