Cara menggunakan perangkaian opsional di Node.js 12

17

Chaining opsional ( obj?.param1?.param2) tampaknya menjadi fitur yang hebat dan saya benar-benar ingin melihatnya diimplementasikan dan akhirnya menyingkirkan jika bersarang, fungsi sewenang-wenang dan apa yang tidak untuk operasi sederhana.

Tapi ada masalah, itu tidak berhasil. Saya memperbarui ke Node 12 dan saya masih mendapatkan kesalahan:

var dude = res?.param?.params[0]
SyntaxError: Unexpected token '.'

atau

var dude = res.param?.params[0]
SyntaxError: Unexpected token '.'

Apa masalahnya?

Apakah saya perlu mengubah beberapa konfigurasi bahasa atau mengunduh perpustakaan untuk mengaktifkan fitur ini? Atau masih belum keluar?

almarc
sumber
2
Hal ini dalam Stage 4. Node.js belum mendukung ini. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Sridhar
Saya mencari 'propagasi null nodejs' dan awalnya tidak dapat menemukan pertanyaan ini. Semoga komentar ini akan meningkatkan kemampuan pencarian.
Casimir
Saya khawatir saya tidak bisa berbuat banyak tentang itu. Ada tag untuk itu, tetapi itu tidak terkait dengan Javascript dan akan menyebabkan lebih banyak kebingungan daripada berbuat baik.
almarc

Jawaban:

17

Chaining Opsional saat ini tidak didukung dalam Node.jsversi 13 dan di bawahnya akan didukung dari Node.jsversi 14 dan sebagian besar browser saat dipindahkan ke Stage 4. Saat ini, beberapa platform mendukungnya, Anda dapat menemukan daftar platform yang mendukung perangkaian opsional di tautan yang diberikan . Anda dapat mengaktifkan opsional menggunakan --harmonybendera.

Balaj Khan
sumber
10

Spesifikasi untuk fitur perangkaian opsional baru saja dipromosikan ke Tahap 4 (Selesai) pada 22 Desember 2019 . Node 12 keluar sebelum spek final - dan begitu juga Node 13, dalam hal ini.

Menurut node.green , perangkaian opsional akan didukung dimulai dengan Node 14, tetapi akan tetap memerlukan --harmonybenderanya. (Ini tampaknya bertentangan dengan deskripsi Node tentang --harmonybendera - fitur pengiriman V8 tidak seharusnya memerlukan bendera - jadi saya tidak yakin apa yang harus dibuat tentang itu.) Namun, apakah itu perlu bendera atau tidak, saya tidak akan ' Saya tidak akan melihat fitur ini sampai Node 14 dirilis sekitar April 2020 .

Jika Anda ingin bermain dengan chaining opsional hari ini, taruhan terbaik Anda adalah menggunakan TypeScript (yang menambahkan chaining opsional dalam versi 3.7 ) atau preprosesor seperti Babel .

Joe White
sumber
10

Saya dapat menggunakan nodejs v13.7.0 dengan flag --harmony.

simpul --harmony myCode.js

Dina

tidak terdefinisi

tidak terdefinisi

//myCode.js

const adventurer = {
  name: 'Alice',
  cat: {
    name: 'Dinah'
  }
};

const catName = adventurer.cat?.name;
console.log(catName);
// expected output: Dinah
const dogName = adventurer.dog?.name;
console.log(catName);
//expected output: undefined

console.log(adventurer.someNonExistentMethod?.())
//expected output: undefined
pengguna3283069
sumber
0

Opsional Chaining akan diimplementasikan dengan Node.jsv14, yang akan dirilis pada 20/04/2020. Sekarang, Anda dapat menggunakan Babeldengan @babel/plugin-proposal-optional-chaining.

Chema
sumber