DeepStrictTypes: Xử lý các kiểu TypeScript phức tạp dễ dàng hơn
(github.com/kakasoo)DeepStrictTypes là bộ utility type cho TypeScript được tạo ra để giúp xử lý các object lồng nhau một cách an toàn và tiện lợi hơn.
Khi dùng Omit hoặc Pick hiện có, sẽ khá khó để xử lý gọn gàng các thuộc tính nằm sâu bên trong, nhưng nếu dùng DeepStrictOmit và DeepStrictPick thì bạn có thể chọn lọc chính xác chỉ những phần mình muốn.
Ví dụ, với kiểu { user: { name: string; age: number } }, nếu dùng DeepStrictOmit<Example, 'user.name'> thì nó sẽ được biến đổi chính xác thành { user: { age: number } }. Ngược lại, nếu dùng DeepStrictPick<Example, 'user.name'> thì bạn cũng có thể chỉ giữ lại phần cần thiết như { user: { name: string } }.
Lý do điều này cần thiết là vì:
✔️ Khi cần lọc chỉ một số trường nhất định trong phản hồi API
✔️ Khi muốn chỉ giữ lại những phần mong muốn trong object lồng nhau
Theo hướng thử nghiệm, tác giả cũng đã thêm các utility runtime như deepStrictObjectKeys, deepStrictAssert.
Hãy thử dùng và gửi phản hồi nhé! Sự quan tâm tới mã nguồn mở là nguồn động lực lớn cho tác giả!
10 bình luận
TypeScript lúc nào cũng là đỉnh
Cảm ơn bạn, người hiểu được sự tuyệt vời của TypeScript.
https://github.com/sindresorhus/type-fest
Cảm ơn bạn!
Like mạnh
Cảm ơn đề cử ủng hộ
Không biết có ai dùng kiểu dữ dội đến mức này không nữa
Nên cũng thấy tò mò về các trường hợp sử dụng thực tế
Tôi đã dùng nó khá nhiều khi làm trong lĩnh vực quảng cáo... :)
Facebook, Google... nói gì thì nói, cuối cùng lĩnh vực quảng cáo chỉ khác nhau đôi chút và hầu như có thể được trừu tượng hóa bằng các kiểu rất giống nhau, nên tôi thường dùng nó khi gom các dịch vụ khác nhau vào cùng một domain.
Có vẻ kiểu đó thường được dùng khá nhiều khi gia công qua lại các kiểu bản ghi dữ liệu DB trên server.
Đúng vậy. Thực ra tôi không nhận được nhiều sự đồng cảm từ phía các bạn làm frontend.