Khẳng định kiểu
Thuộc phần Giới thiệu về TypeScript trong hành trình JavaScript của Coddy. Bài học 68 trên 73.
Đôi khi TypeScript không có đủ thông tin để xác định chính xác kiểu dữ liệu của một giá trị, nhưng bạn là nhà phát triển nên biết rõ hơn giá trị đó thực sự thuộc kiểu nào. Phép khẳng định kiểu cho phép bạn nói với TypeScript: "Hãy tin mình, mình biết giá trị này thuộc kiểu cụ thể này."
TypeScript cung cấp hai cú pháp để khẳng định kiểu. Cú pháp as là cách dùng phổ biến hơn:
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;Bạn cũng có thể dùng cú pháp dấu ngoặc nhọn, dù cách này ít phổ biến hơn trong TypeScript hiện đại:
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;Thử thách
DễTạo một hàm (function) xử lý dữ liệu từ mô phỏng API bên ngoài. Bạn sẽ làm việc với các giá trị có kiểu unknown và dùng phép khẳng định kiểu để truy cập thuộc tính an toàn.
Tạo một biến apiResponse có kiểu unknown và gán cho biến chuỗi JSON sau:
{"userId": 42, "username": "alice_dev", "isActive": true}Tạo một hàm có tên processUserData để:
- Nhận tham số
datacó kiểuunknown - Dùng phép khẳng định kiểu để coi
datalà mộtstring - Phân tích chuỗi JSON bằng
JSON.parse() - Dùng một phép khẳng định kiểu khác để coi kết quả đã phân tích là một đối tượng có các thuộc tính
userId(number),username(string) vàisActive(boolean) - Trả về một chuỗi có định dạng:
"User [userId]: [username] (Active: [isActive])" - Khai báo tường minh kiểu trả về là
string
Tạo thêm dữ liệu kiểm thử:
- Tạo
secondApiResponsecó kiểuunknownvới chuỗi JSON:{"userId": 15, "username": "bob_admin", "isActive": false} - Tạo
thirdApiResponsecó kiểuunknownvới chuỗi JSON:{"userId": 99, "username": "charlie_user", "isActive": true}
Kiểm thử hàm và in ra các kết quả sau:
- Gọi
processUserDatavớiapiResponsevà in kết quả - Gọi
processUserDatavớisecondApiResponsevà in kết quả - Gọi
processUserDatavớithirdApiResponsevà in kết quả
Tự làm thử
// Tạo các biến chứa phản hồi từ API
const apiResponse: unknown = '{"userId": 42, "username": "alice_dev", "isActive": true}';
const secondApiResponse: unknown = '{"userId": 15, "username": "bob_admin", "isActive": false}';
const thirdApiResponse: unknown = '{"userId": 99, "username": "charlie_user", "isActive": true}';
// TODO: Tạo hàm (function) processUserData tại đây
// Kiểm tra hàm và in ra kết quả
console.log(processUserData(apiResponse));
console.log(processUserData(secondApiResponse));
console.log(processUserData(thirdApiResponse));Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Giới thiệu về TypeScript
1Bắt đầu với TS
TypeScript là gì?Tại sao nên dùng TypeScript?Đoạn code TypeScript đầu tiênQuy trình biên dịch và lỗiÔn tập: Giới thiệu về TS4Làm việc với hàm
Khai báo kiểu cho tham số và giá trị trả vềKhai báo kiểu cho hàm mũi tênKiểu trả về voidTham số tùy chọn với '?'Giá trị mặc định của tham sốKhai báo kiểu cho tham số restĐịnh nghĩa kiểu hàmÔn tập: xây dựng hàm có kiểu2Kiểu dữ liệu cốt lõi
Kiểu dữ liệu cơ bản: str, num, booleanKiểu 'any': lối thoátKiểu 'unknown'Làm việc với null và undefinedSuy luận kiểu trong thực tếChú thích kiểu tường minhÔn tập: luyện tập về kiểu dữ liệu cốt lõi3Cấu trúc dữ liệu: mảng và tuple
Mảng định kiểuTừ khóa readonly cho mảngTuple là gì?Khai báo và truy cập tuplePhân rã tupleTuple chỉ đọcMảng định kiểu nhiều chiềuToán tử spread với mảngÔn tập: mảng và tupleTự luyện tập: Playground TypeScript