Các biến kiểu tổng quát trong TypeScript
Khi chúng ta tạo một hàm kiểu tổng quát, TypeScript buộc chúng ta sử dụng đúng các biến kiểu trong thân của nó. Do đó, cần phải xem xét hành vi của mỗi tham số được truyền vào hàm từ góc độ của tất cả các kiểu có sẵn cho chúng ta.
Hãy tạo một hàm để xác định độ dài của một biến kiểu tổng quát:
function myFunc <T> (data: T): T {
console.log(data.length); // lỗi
return data;
}
Lỗi xảy ra vì không phải tất cả các kiểu đều có độ dài. Ví dụ, đối với các giá trị boolean, hành động như vậy là không thể. Tuy nhiên, nếu chúng ta xác định rõ kiểu và chỉ định nó là một mảng, thì mã sẽ hoạt động chính xác. Bởi vì mỗi mảng, bất kể kiểu của nó là gì, đều có độ dài:
function myFunc <T> (data: T[]): T[] {
console.log(data.length); // 3
return data;
}
console.log(myFunc([1, 3, 5])); // [ 1, 3, 5 ]
Hãy viết một hàm để duyệt qua và in tất cả các phần tử của một mảng kiểu tổng quát vào console.