Giao diện tổng quát
Thuộc phần Giới thiệu về TypeScript trong hành trình JavaScript của Coddy. Bài học 61 trên 73.
Tương tự như khi tạo hàm tổng quát, bạn cũng có thể tạo giao diện tổng quát. Cách này cho phép bạn định nghĩa cấu trúc của một đối tượng mà vẫn giữ một số kiểu thuộc tính linh hoạt và có thể tái sử dụng.
Sau đây là cách bạn tạo một giao diện tổng quát bằng cùng cú pháp tham số kiểu:
interface Container<T> {
value: T;
isEmpty: boolean;
}<T> sau tên giao diện (interface) tạo một tham số kiểu (type parameter) có thể dùng trong toàn bộ định nghĩa giao diện. Trong ví dụ này, thuộc tính value sẽ có kiểu mà bạn chỉ định khi dùng giao diện, còn isEmpty vẫn giữ kiểu boolean cố định.
Khi sử dụng một giao diện tổng quát, bạn chỉ định kiểu cụ thể trong dấu ngoặc nhọn:
const stringContainer: Container<string> = {
value: "hello",
isEmpty: false
};
const numberContainer: Container<number> = {
value: 42,
isEmpty: false
};Thử thách
DễTạo một giao diện (interface) tổng quát có tên Result, có thể chứa dữ liệu thuộc bất kỳ kiểu nào cùng với thông tin về trạng thái thành công.
Giao diện này cần có hai thuộc tính:
successthuộc kiểubooleandatathuộc kiểuT(tham số kiểu tổng quát)
Tạo các đối tượng sau bằng giao diện tổng quát của bạn:
stringResultthuộc kiểuResult<string>, vớisuccess: truevàdata: "Operation completed"numberResultthuộc kiểuResult<number>, vớisuccess: truevàdata: 42booleanResultthuộc kiểuResult<boolean>, vớisuccess: falsevàdata: falsearrayResultthuộc kiểuResult<string[]>, vớisuccess: truevàdata: ["item1", "item2", "item3"]
Tạo một hàm tổng quát có tên processResult với các yêu cầu sau:
- Sử dụng tham số kiểu tổng quát
T - Nhận một tham số
resultthuộc kiểuResult<T> - Trả về một thông báo dạng chuỗi
- Nếu
successlàtrue, trả về"Success: [data]" - Nếu
successlàfalse, trả về"Failed: [data]"
In ra các kết quả sau:
- In ra kết quả gọi
processResultvớistringResult - In ra kết quả gọi
processResultvớinumberResult - In ra kết quả gọi
processResultvớibooleanResult - In ra kết quả gọi
processResultvớiarrayResult - In ra
stringResult.data
Tự làm thử
// TODO: Viết code của bạn ở đây
// Tạo interface Result tổng quát
// Tạo các đối tượng bằng interface Result
// Tạo hàm (function) processResult tổng quát
// In ra các đầu ra cần thiếtBà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à tuple6Khai báo kiểu cho đối tượng và interface
Chú thích kiểu đối tượng trực tiếpBí danh kiểu cho đối tượngGiới thiệu về interfaceInterface và bí danh kiểuThuộc tính tùy chọn và chỉ đọcMở rộng interface và kiểuThêm phương thức vào interfaceÔn tập: định nghĩa hình dạng đối tượng9Kiểu tổng quát: tìm hiểu cơ bản
Vấn đề mà kiểu tổng quát giải quyếtTạo hàm identity tổng quátSử dụng hàm tổng quátMảng tổng quátGiao diện tổng quátÔn tập: luyện tập hàm tổng quátTự luyện tập: Playground TypeScript