Czy można eksportować funkcje strzałek w ES6 / 7?

102

Poniższa instrukcja eksportu podaje błąd składni

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

czemu ?

Mogę eksportować tylko nazwane funkcje

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

Jaki jest powód?

jozzy
źródło
4
Co właściwie mówi błąd?
Andy,
2
Działa dobrze tutaj: astexplorer.net/#/0fv5UXttsP .
Felix Kling
1
jaki jest błąd składni?
omarjmh
1
Nie możesz nazwać domyślnego eksportu.
Felix Kling

Odpowiedzi:

165

Czy można eksportować funkcje strzałek w ES6 / 7?

Tak. exportnie dba o wartość, którą chcesz wyeksportować.

Poniższa instrukcja eksportu zawiera błąd składni ... dlaczego?

Nie możesz mieć domyślnego eksportu i nadać mu nazwy („domyślna” to już nazwa eksportu).

Albo tak

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

lub

const hello = () => console.log("say hello");
export default hello;
Felix Kling
źródło
4
Jak działa poniższe polecenie, a następnie wyeksportuj domyślne hello = () => {console.log ("why the downvote")}
jozzy Kwietnia
3
x = yjest wyrażeniem przypisania, którego wynikiem jest wartość y. To nie jest deklaracja zmiennej. Możesz umieścić x = ydowolne miejsce, w którym możesz umieścić wyrażenie. Uwaga: Spowoduje to przejście w tryb ścisły, jeśli xnie został wcześniej zdefiniowany.
Felix Kling
2
a co z regularnym eksportem? czy można zrobić coś takiego export () => {/*body*/} as getUsers;:? czy też muszę go najpierw zdefiniować, a następnie wyeksportować?
Tomasz Mularczyk
44
@Tomasz:export const getUser = () => {...};
Felix Kling
3
@Burrich: Nie powinno mieć znaczenia, w jaki sposób została utworzona funkcja, o ile można jej używać w sposób, w jaki powinna.
Felix Kling
18

Jeśli nie chcesz domyślnego eksportu, możesz po prostu wyeksportować nazwaną funkcję z następującą składnią:

export const yourFunctionName = () => console.log("say hello");
Raphael Pinel
źródło
Tak was zastąpić export function yourFunctionName () {przy export const yourFunctionName = () => . Długość znaków jest taka sama, ale istnieje duża szansa na popełnienie literówki w tej sekcji = () =>. Szczerze mówiąc, wydaje mi się to mniej czytelne i więcej pracy :)