Menu
CoddyTech

Kiểu giá trị cố định

Thuộc phần Giới thiệu về TypeScript trong hành trình JavaScript của Coddy. Bài học 33 trên 73.

Kiểu literal giúp bạn giới hạn biến ở những giá trị cụ thể, chính xác thay vì các nhóm rộng hơn. Thay vì chấp nhận bất kỳ chuỗi nào, bạn có thể chỉ cho phép "left", "right", "up" hoặc "down".

Kiểu literal dùng chính giá trị chính xác làm kiểu dữ liệu.

Bạn có thể tạo kiểu literal cho chuỗi, số hoặc giá trị boolean:

let direction: "left" = "left";  // Only "left" is allowed
let count: 42 = 42;              // Only the number 42 is allowed
let isReady: true = true;        // Only true is allowed

Kiểu giá trị cố định trở nên mạnh mẽ khi kết hợp với kiểu hợp, tạo ra một tập hợp có kiểm soát gồm các giá trị được phép. Cách này rất phù hợp với những trường hợp như hướng di chuyển, mã trạng thái hoặc tùy chọn cấu hình:

type Direction = "left" | "right" | "up" | "down";
type Status = "pending" | "approved" | "rejected";

let playerMove: Direction = "up";    // Valid
let orderStatus: Status = "pending"; // Valid
// let invalid: Direction = "diagonal"; // Error!

Cách tiếp cận này mang lại cho bạn sự linh hoạt với nhiều lựa chọn, đồng thời vẫn đảm bảo an toàn kiểu dữ liệu nghiêm ngặt. TypeScript sẽ phát hiện lỗi chính tả và giá trị không hợp lệ trong quá trình biên dịch, giúp code của bạn đáng tin cậy hơn so với khi dùng kiểu chuỗi thông thường.

challenge icon

Thử thách

Dễ

Tạo một bí danh kiểu có tên Direction cho các kiểu giá trị cố định "left" | "right" | "up" | "down".

Tạo một bí danh kiểu có tên GameState cho các kiểu giá trị cố định "menu" | "playing" | "paused" | "gameover".

Tạo một bí danh kiểu có tên Difficulty cho các kiểu giá trị cố định "easy" | "medium" | "hard".

Bây giờ, hãy khai báo các biến sau bằng bí danh kiểu của bạn:

  • Khai báo một biến có tên playerDirection thuộc kiểu Direction và gán giá trị "up" cho biến đó
  • Khai báo một biến có tên currentState thuộc kiểu GameState và gán giá trị "playing" cho biến đó
  • Khai báo một biến có tên selectedDifficulty thuộc kiểu Difficulty và gán giá trị "medium" cho biến đó

Tạo một hàm có tên movePlayer, nhận tham số có tên direction thuộc kiểu Direction và trả về một string. Hàm này cần trả về một thông báo theo định dạng "Moving [direction]".

Tạo một hàm khác có tên updateGameState, nhận tham số có tên state thuộc kiểu GameState và trả về một string. Hàm này cần trả về một thông báo theo định dạng "Game state: [state]".

Gọi các hàm bằng những biến bạn đã tạo và in ra kết quả:

  • Gọi movePlayer với playerDirection và in ra kết quả
  • Gọi updateGameState với currentState và in ra kết quả
  • In ra giá trị của selectedDifficulty

In mỗi kết quả trên một dòng riêng, theo thứ tự đã nêu ở trên.

Tự làm thử

// TODO: Viết code của bạn ở đây
// Tạo bí danh kiểu cho Direction, GameState và Difficulty
// Khai báo các biến bằng bí danh kiểu vừa tạo
// Tạo các hàm movePlayer và updateGameState
// Gọi các hàm và in ra kết quả
quiz iconTự kiểm tra

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

Tự luyện tập: Playground TypeScript