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?


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;

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

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 :)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.