Câu hỏi phỏng vấn Typescript
Câu hỏi

Điểm khác biệt cơ bản giữa Optional Chaining (?.)Non-null assertion operator (!) trong TypeScript là gì?

Câu trả lời

Điểm khác biệt cơ bản giữa Toán tử Chuỗi Tùy chọn (?.) và Toán tử Khẳng định Không null (!) trong TypeScript nằm ở cách chúng xử lý giá trị có thể là null hoặc undefined. Toán tử Chuỗi Tùy chọn (?.) cho phép truy cập thuộc tính hoặc gọi phương thức một cách an toàn mà không gây ra lỗi nếu phần tử trước ?. là null hoặc undefined. Nếu điều này xảy ra, biểu thức sẽ ngay lập tức trả về giá trị undefined mà không tiếp tục thực hiện các phép toán tiếp theo trong chuỗi[4][8][12][14][15][16].

Ngược lại, Toán tử Khẳng định Không null (!) được sử dụng để bảo cho trình biên dịch TypeScript biết rằng giá trị đó chắc chắn không phải là null hoặc undefined. Khi sử dụng toán tử này, bạn đang khẳng định rằng giá trị không bao giờ có thể là null hoặc undefined. Tuy nhiên, nếu giá trị thực sự là null hoặc undefined tại thời điểm thực thi, việc sử dụng toán tử này có thể dẫn đến lỗi tại thời điểm chạy chương trình (runtime error)[2][5][6][7][13][17][18].

Vì vậy, Toán tử Chuỗi Tùy chọn (?.) cung cấp một cách an toàn để truy cập các thuộc tính có thể không tồn tại, trong khi Toán tử Khẳng định Không null (!) nên được sử dụng khi bạn có đủ thông tin để chắc chắn rằng giá trị đó không thể là null hoặc undefined.

Citations:
[1] https://www.reddit.com/r/typescript/comments/ej924r/nonnull_assertion_operator_vs_optional_chaining/
[2] https://betterprogramming.pub/cleaner-typescript-with-the-non-null-assertion-operator-300789388376
[3] https://www.c-sharpcorner.com/article/explain-null-ha...

middle

middle

Gợi ý câu hỏi phỏng vấn

middle

Typings trong TypeScript là gì?

middle

Làm thế nào để tạo một kiểu tuple readonly trong TypeScript?

junior

Làm thế nào để kiểm tra giá trị nullundefined

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào