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


102

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

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

Зачем ?

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

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

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


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 = () => . Длина символов такая же, но в этом разделе высока вероятность опечатки = () =>. Честно говоря, мне кажется, что он менее
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.