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 allowedKiể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.
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
playerDirectionthuộc kiểuDirectionvà gán giá trị"up"cho biến đó - Khai báo một biến có tên
currentStatethuộc kiểuGameStatevà gán giá trị"playing"cho biến đó - Khai báo một biến có tên
selectedDifficultythuộc kiểuDifficultyvà 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
movePlayervớiplayerDirectionvà in ra kết quả - Gọi
updateGameStatevớicurrentStatevà 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ả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õi5Kiểu: bí danh, hợp và giao
Bí danh kiểu cho các kiểu nguyên thủyKiểu hợp ('|')Làm việc với kiểu hợpKiểu giá trị cố địnhKiểu giao ('&')Kết hợp các bí danh kiểuÔn tập: kết hợp kiểu nâng cao3Cấ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