Чи можна експортувати функції Arrow у ES6 / 7?


95

Інструкція експорту нижче містить синтаксичну помилку

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

чому?

Я можу експортувати лише названі функції

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

В чому причина?


4
Про що насправді говорить помилка?
Енді,

2
Тут чудово працює: astexplorer.net/#/0fv5UXttsP .
Фелікс Клінг,


1
що таке синтаксична помилка?
omarjmh

1
Ви не можете назвати експорт за замовчуванням.
Фелікс Клінг,

Відповіді:


154

Чи можна експортувати функції Arrow у ES6 / 7?

Так. exportне дбає про вартість, яку ви хочете експортувати.

Інструкція експорту нижче містить синтаксичну помилку ... чому?

Ви не можете мати стандартний експорт і дати йому ім’я («за замовчуванням» це вже назва експорту).

Або зробіть

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;:? або я повинен спочатку його визначити, а потім експортувати?
Томаш Муларчик

44
@Tomasz:export const getUser = () => {...};
Фелікс Клінг

3
@Burrich: Не повинно мати значення, як була створена функція, якщо вона може бути використана таким, яким вона повинна бути.
Фелікс Клінг,

12

Якщо ви не хочете експортувати за замовчуванням, ви можете просто експортувати названу функцію з таким синтаксисом:

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

Тож ви замінюєте export function yourFunctionName () {на export const yourFunctionName = () => . Довжина символів однакова, але є великий шанс зробити помилку в цьому розділі = () =>. Чесно кажучи, для мене це здається менш читабельним і більше працює :)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.