Чи можна експортувати функції 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.