Ist es möglich, Pfeilfunktionen in ES6 / 7 zu exportieren?

92

Die folgende Exportanweisung gibt einen Syntaxfehler aus

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

Warum ?

Ich kann nur benannte Funktionen exportieren

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

Was ist der Grund?

jozzy
quelle
4
Was sagt der Fehler eigentlich?
Andy
2
Funktioniert hier gut: astexplorer.net/#/0fv5UXttsP .
Felix Kling
1
Was ist der Syntaxfehler?
Omarjmh
1
Sie können keinen Standardexport benennen.
Felix Kling

Antworten:

151

Ist es möglich, Pfeilfunktionen in ES6 / 7 zu exportieren?

Ja. exportkümmert sich nicht um den Wert, den Sie exportieren möchten.

Die folgende Exportanweisung gibt einen Syntaxfehler aus ... warum?

Sie können keine haben Standard - Export und geben Sie ihm einen Namen ( „default“ ist bereits der Name des Exports).

Entweder tun

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

oder

const hello = () => console.log("say hello");
export default hello;
Felix Kling
quelle
4
Wie funktioniert das unten, dann exportieren Sie Standard Hallo = () => {console.log ("warum die Abwertung")}
jozzy
3
x = yist ein Zuweisungsausdruck, der in den Wert von aufgelöst wird y. Es ist keine Variablendeklaration. Sie können x = yüberall einen Ausdruck einfügen. Hinweis: Dies wird im strengen Modus ausgelöst, wenn dies xnicht zuvor definiert wurde.
Felix Kling
2
Was ist mit regelmäßigen Exporten? ist es möglich so etwas zu tun wie : export () => {/*body*/} as getUsers;? oder muss ich es erst definieren und dann exportieren?
Tomasz Mularczyk
43
@Tomasz:export const getUser = () => {...};
Felix Kling
3
@Burrich: Es sollte keine Rolle spielen, wie eine Funktion erstellt wurde, solange sie so verwendet werden kann, wie sie sein soll.
Felix Kling
10

Wenn Sie keinen Standardexport wünschen, können Sie einfach eine benannte Funktion mit folgender Syntax exportieren:

export const yourFunctionName = () => console.log("say hello");
Raphael Pinel
quelle
So ersetzen Sie export function yourFunctionName () {mit export const yourFunctionName = () => . Die Zeichenlänge ist gleich, aber es besteht eine hohe Wahrscheinlichkeit, dass in diesem Abschnitt ein Tippfehler gemacht wird = () =>. Ehrlich gesagt, für mich fühlt es sich weniger lesbar und mehr Arbeit an :)