Tạo một hàm generic nhận vào hai đối tượng và trả về một đối tượng mới trong TypeScript.
Trong bài tập này, mình sẽ tạo một hàm generic
nhận vào hai đối tượng và trả về một đối tượng mới kết hợp các thuộc tính của hai đối tượng đó. Hàm này sẽ kết hợp thuộc tính từ cả hai đối tượng và tạo ra một đối tượng mới.
Viết hàm Generic
Hãy viết một hàm generic mergeObjects
nhận vào hai đối tượng và trả về một đối tượng mới kết hợp các thuộc tính của hai đối tượng.
function mergeObjects<T, U>(obj1: T, obj2: U): T & U { return { ...obj1, ...obj2 }; }
Sử dụng hàm với hai đối tượng
Hãy sử dụng hàm mergeObjects
với hai đối tượng để kết hợp các thuộc tính và tạo ra một đối tượng mới.
const object1 = { id: 1, name: "Alice" }; const object2 = { age: 30, gender: "female" }; const mergedObject = mergeObjects(object1, object2); console.log(mergedObject);
Hàm mergeObjects
sử dụng kiểu dữ liệu generic
để nhận vào hai đối tượng T và U. Nó sử dụng spread operator (...)
để kết hợp các thuộc tính của cả hai đối tượng và tạo ra một đối tượng mới có chứa tất cả các thuộc tính.
Kết quả
Kết quả: { id: 1, name: "Alice", age: 30, gender: "female" }
Kết quả in ra sẽ là một đối tượng mới có chứa tất cả các thuộc tính từ cả object1
và object2
. Trong trường hợp này, đối tượng mergedObject
sẽ có các thuộc tính id, name, age, và gender.
Hàm generic mergeObjects
giúp kết hợp các thuộc tính từ hai đối tượng vào một đối tượng mới. Việc này giúp tái sử dụng mã lệnh và tạo ra một đối tượng kết hợp các thuộc tính từ nhiều nguồn khác nhau.
Bài giải
-------------------- ######## --------------------
Câu hỏi thường gặp liên quan:
- Viết một lớp Stack và Queue sử dụng Generic Type.
- Tạo một hàm generic nhận vào một mảng và trả về phần tử cuối cùng của mảng trong TypeScript.
- Viết một lớp Dictionary/Map sử dụng Generic Type để lưu trữ cặp key-value trong TypeScript.
- Tạo một hàm generic nhận vào một mảng và một hàm predicate trong TypeScript.
- Hàm Generic với Keyof trong Typescript
- Tạo một hàm generic nhận vào hai đối tượng và trả về một đối tượng mới trong TypeScript.