Можно ли экспортировать стрелочные функции в ES6 / 7?

102

Приведенный ниже оператор экспорта дает синтаксическую ошибку.

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

Зачем ?

Я могу экспортировать только именованные функции

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

Какова причина?

Jozzy
источник
4
Что на самом деле говорит ошибка?
Энди
2
Здесь отлично работает: astexplorer.net/#/0fv5UXttsP .
Феликс Клинг,
1
в чем ошибка синтаксиса?
omarjmh
1
Вы не можете назвать экспорт по умолчанию.
Феликс Клинг,

Ответы:

165

Можно ли экспортировать стрелочные функции в ES6 / 7?

Да. exportне заботится о стоимости, которую вы хотите экспортировать.

Оператор экспорта ниже дает синтаксическую ошибку ... почему?

Вы не можете иметь экспорт по умолчанию и дать ему имя («default» уже является именем экспорта).

Либо сделай

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

или

const hello = () => console.log("say hello");
export default hello;
Феликс Клинг
источник
4
Как работает приведенное ниже, а затем экспортировать по умолчанию hello = () => {console.log ("почему отрицательный голос")}
jozzy
3
x = y- это выражение присваивания, которое разрешается в значение y. Это не объявление переменной. Вы можете поставить x = yлюбое место, где можете выразить выражение. Примечание: это вызовет строгий режим, если xон не определен заранее.
Феликс Клинг,
2
как насчет регулярного экспорта? можно ли сделать что-то вроде export () => {/*body*/} as getUsers;:? или мне нужно сначала определить его, а затем экспортировать?
Tomasz
44
@Tomasz:export const getUser = () => {...};
Феликс Клинг,
3
@Burrich: Не имеет значения, как была создана функция, главное, чтобы ее можно было использовать так, как предполагалось.
Феликс Клинг
18

Если вам не нужен экспорт по умолчанию, вы можете просто экспортировать именованную функцию с помощью этого синтаксиса:

export const yourFunctionName = () => console.log("say hello");
Рафаэль Пинель
источник
Итак, вы замените export function yourFunctionName () {на export const yourFunctionName = () => . Длина символов такая же, но в этом разделе высока вероятность опечатки = () =>. Честно говоря, мне кажется, что он менее