📄️ Tất cả những gì không phải primitive đều là object
Trong JavaScript, tất cả những gì không phải primitive type đều là object. Object không chỉ bao gồm instance tạo từ class, mà còn có bản thân class, array, regular expression.
📄️ Object literal
Đặc điểm của JavaScript là có thể dễ dàng tạo object bằng cú pháp object literal {}.
📄️ Property của object
Object trong JavaScript là tập hợp các property. Property là cặp key và value. Value của property có thể là primitive type như 1 hay "string", function, hoặc object.
📄️ Type annotation của object
Trong TypeScript, type annotation của object được viết giống như JavaScript object literal, với cặp key và type của value cho từng property.
📄️ Readonly property của object type
Trong TypeScript, có thể đặt property của object thành read-only. Thêm modifier readonly vào property muốn đặt thành read-only. Khi cố gán giá trị cho property read-only, TypeScript compiler sẽ cảnh báo không thể gán.
📄️ Sự khác biệt giữa readonly và const
Trong JavaScript, biến khai báo bằng const không thể gán lại. Trong TypeScript, khi thêm modifier readonly vào property của object type, property đó không thể gán lại. Hai tính năng này giống nhau ở điểm "không thể gán lại". Vậy sự khác biệt là gì?
📄️ Optional property của object type
Trong TypeScript, để type cho optional property của object, thêm ? sau tên property.
📄️ Excess property checking
Type của object trong TypeScript có trường hợp được kiểm tra thêm gọi là excess property checking. Excess property checking là kiểm tra cấm việc gán object có property không tồn tại trong type của object.
📄️ Index signature
Trong TypeScript, có trường hợp muốn chỉ định type của property mà không chỉ định tên field của object. Lúc này có thể sử dụng index signature. Ví dụ, object có tất cả property là type number được type annotation như sau.
📄️ Prototype-based
Phần này giải thích tổng quan về prototype-based của JavaScript. Nội dung được viết dành cho những người đã từng sử dụng class trong Java, PHP hoặc đã tiếp xúc với lập trình hướng đối tượng. Ngoài ra, phần này chủ yếu trả lời các câu hỏi sau:
📄️ Sự khác biệt giữa object, Object, {}
Trong TypeScript, khi type annotation cho object, thông thường sẽ chỉ định cả type của property.
📄️ Destructuring assignment của object
JavaScript có cú pháp tiện lợi là destructuring assignment để lấy property từ object.
📄️ Shorthand property names
Khi key của object và tên biến giống nhau, có thể sử dụng shorthand property names khi gán giá trị vào object. Đây là tính năng liên quan đến destructuring assignment. Ví dụ sau minh họa gần như toàn bộ.
📄️ Optional chaining
Optional chaining ?. trong JavaScript là cách an toàn để tham chiếu property mà không gây error ngay cả khi object reference là null hoặc undefined.
📄️ Cách loop object
Giải thích cách loop qua property của object trong JavaScript/TypeScript.