Sử dụng toán tử xích tùy chọn để truy cập thuộc tính đối tượng


14

TypeScript 3.7 hiện hỗ trợ toán tử xích tùy chọn . Do đó, bạn có thể viết mã như:

const value = a?.b?.c;

Tức là, bạn có thể sử dụng toán tử này để truy cập các thuộc tính của một đối tượng, trong đó chính đối tượng đó có thể nullhoặc undefined. Bây giờ những gì tôi muốn làm về cơ bản là giống nhau, nhưng tên thuộc tính là động:

const value = a?[b]?.c;

Tuy nhiên, ở đó tôi nhận được một lỗi cú pháp:

lỗi TS1005: ':' dự kiến.

Tôi làm gì sai ở đây? Điều này thậm chí có thể?

PS: Đề xuất dường như ngụ ý rằng điều này là không thể (nhưng có lẽ tôi nhận được các ví dụ cú pháp sai).


1
Bạn bỏ lỡ điểm, nhà điều hành là?.
zessx

Vâng, tất nhiên, cảm ơn rất nhiều 😊
Golo Roden

Câu trả lời:


17

Khi truy cập một thuộc tính bằng cách sử dụng ký hiệu ngoặc và chuỗi tùy chọn, bạn cũng cần phải có một dấu chấm ngoài dấu ngoặc:

const value = a?.[b]?.c;

Đây là cú pháp được đề xuất bởi đề xuất TC39 , bởi vì nếu không, trình phân tích cú pháp sẽ khó nhận ra liệu đây ?có phải là một phần của biểu thức ternary hoặc một phần của chuỗi tùy chọn.


1
Tôi sẽ thay thế khó khăn bằng không thể .
vol7ron

@ vol7ron tại sao vậy - tôi nghĩ nó có thể mong đợi:
AnArrayOfFifts

Nó sẽ không thể phân biệt, đặc biệt là khi có lỗi.
vol7ron
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.