Cách sử dụng chuỗi tùy chọn trong Node.js 12


17

Chuỗi tùy chọn ( obj?.param1?.param2) dường như là một tính năng tuyệt vời và tôi thực sự muốn thấy nó được triển khai và cuối cùng loại bỏ các if lồng nhau, các hàm tùy ý và những gì không phải cho một hoạt động đơn giản như vậy.

Nhưng có một vấn đề, nó không hoạt động. Tôi đã cập nhật lên Nút 12 và tôi vẫn gặp lỗi:

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

hoặc là

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

Vấn đề là gì?

Tôi có cần thay đổi một số cấu hình ngôn ngữ hoặc tải xuống thư viện để kích hoạt tính năng này không? Hay đơn giản là nó chưa ra?


2
Đó là trong Stage 4. Node.js chưa hỗ trợ điều này. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
triệt

Tôi đã tìm kiếm 'nodejs null lan truyền' và ban đầu không thể tìm thấy câu hỏi này. Hy vọng bình luận này sẽ cải thiện khả năng tìm kiếm.
Casimir

Tôi sợ tôi không thể làm gì nhiều về nó. Có một thẻ cho nó, nhưng nó không liên quan đến Javascript và sẽ gây nhầm lẫn nhiều hơn là làm tốt.
almarc

Câu trả lời:


17

Chaining tùy chọn hiện không được hỗ trợ trong Node.jsphiên bản 13 trở xuống, nó sẽ được hỗ trợ từ Node.jsphiên bản 14 và hầu hết các trình duyệt khi nó được chuyển đến Stage 4. Hiện tại, rất ít nền tảng đang hỗ trợ nó, bạn có thể tìm thấy danh sách các nền tảng hỗ trợ chuỗi tùy chọn trong liên kết đã cho . Bạn có thể kích hoạt tùy chọn bằng cách sử dụng --harmonycờ.


10

Thông số kỹ thuật cho tính năng xích tùy chọn vừa được thăng cấp lên Giai đoạn 4 (Hoàn tất) vào ngày 22 tháng 12 năm 2019 . Nút 12 xuất hiện trước khi thông số kỹ thuật là cuối cùng - và Nút 13 cũng vậy, cho vấn đề đó.

Theo node.green , chuỗi tùy chọn sẽ được hỗ trợ bắt đầu bằng Nút 14, nhưng vẫn sẽ yêu cầu --harmonycờ. (Điều này dường như mâu thuẫn với mô tả về --harmonycờ của Node - Các tính năng vận chuyển của V8 không cần phải có cờ - vì vậy tôi không chắc chắn nên làm gì với điều đó.) T hy vọng sẽ thấy tính năng này cho đến khi Node 14 phát hành vào khoảng tháng 4 năm 2020 .

Nếu bạn muốn chơi với chuỗi tùy chọn ngày hôm nay, cách tốt nhất của bạn là sử dụng TypeScript (đã thêm chuỗi tùy chọn trong phiên bản 3.7 ) hoặc bộ tiền xử lý như Babel .


10

Tôi đã có thể sử dụng nodejs v13.7.0 với cờ --harmony.

nút --harmony myCode.js

Dinah

chưa xác định

chưa xác định

//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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.