Apakah mungkin untuk mengekspor fungsi Panah di ES6 / 7?

102

Pernyataan ekspor di bawah memberikan kesalahan sintaksis

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

kenapa?

Saya hanya dapat mengekspor fungsi bernama

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

Apa alasannya?

jozzy
sumber
4
Apa sebenarnya kesalahan tersebut?
Andy
2
Bekerja dengan baik di sini: astexplorer.net/#/0fv5UXttsP .
Felix Kling
1
apa kesalahan sintaksnya?
omarjmh
1
Anda tidak dapat memberi nama ekspor default.
Felix Kling

Jawaban:

165

Apakah mungkin untuk mengekspor fungsi Panah di ES6 / 7?

Iya. exporttidak peduli dengan nilai yang ingin Anda ekspor.

Pernyataan ekspor di bawah memberikan kesalahan sintaks ... mengapa?

Anda tidak dapat memiliki ekspor default dan memberinya nama ("default" sudah menjadi nama ekspor).

Baik melakukannya

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

atau

const hello = () => console.log("say hello");
export default hello;
Felix Kling
sumber
4
Bagaimana cara di bawah ini bekerja kemudian ekspor default hello = () => {console.log ("why the downvote")}
jozzy
3
x = yadalah ekspresi penugasan yang ditetapkan ke nilai y. Ini bukan deklarasi variabel. Anda bisa meletakkannya di x = ymana saja Anda bisa meletakkan ekspresi. Catatan: Ini akan muncul dalam mode ketat jika xtidak ditentukan sebelumnya.
Felix Kling
2
bagaimana dengan ekspor reguler? apakah mungkin untuk melakukan sesuatu seperti export () => {/*body*/} as getUsers;:? atau apakah saya harus mendefinisikannya terlebih dahulu lalu mengekspornya?
Tomasz Mularczyk
44
@ Tomasz:export const getUser = () => {...};
Felix Kling
3
@ Burrich: Tidak masalah bagaimana fungsi dibuat selama dapat digunakan dengan cara yang seharusnya.
Felix Kling
18

Jika Anda tidak menginginkan ekspor default, Anda cukup mengekspor fungsi bernama dengan sintaks ini:

export const yourFunctionName = () => console.log("say hello");
Raphael Pinel
sumber
Jadi Anda ganti export function yourFunctionName () {dengan export const yourFunctionName = () => . Panjang karakternya sama, tetapi ada kemungkinan besar untuk membuat kesalahan ketik di bagian ini = () =>. Sejujurnya, bagi saya ini terasa kurang dapat dibaca dan lebih banyak pekerjaan :)