0
0
Lập trình
Admin Team
Admin Teamtechmely

@traversable/valibot: Thư viện TypeScript mạnh mẽ cho lập trình viên

Đăng vào 4 tháng trước

• 3 phút đọc

Giới thiệu Thư viện @traversable/valibot

Vài tuần trước, tôi đã phát hành một thư viện TypeScript mang tên @traversable/valibot. Bài viết này sẽ giới thiệu về chức năng của thư viện và nổi bật một số tính năng độc đáo của nó.

Ảnh bìa:
Astro Boy Schematics (鉄腕アトム), Tezuka Productions

Lưu ý:
Hiện tại, @traversable/valibot chỉ hoạt động với phiên bản mới nhất của Valibot (v1.1).


Những điểm khác biệt của @traversable/valibot

@traversable/valibot có thể được sử dụng theo 2 cách:

  1. Chọn một trong hơn 15 bộ chuyển đổi có sẵn.
  2. Tự xây dựng bộ chuyển đổi tùy chỉnh của riêng bạn.

Bộ chuyển đổi có sẵn

ᯓ🚀 vx.check

  • Biến một schema Valibot thành một loại bảo vệ hiệu suất cao.

  • 📖 Hồ sơ hiệu suất

ᯓ🚀 vx.deepClone

  • Chuyển đổi một schema Valibot thành một hàm “sao chép sâu”.

  • 📖 Cách tôi xây dựng hàm sao chép sâu nhanh nhất của JavaScript

ᯓ🚀 vx.deepEqual

  • Chuyển đổi một schema Valibot thành một hàm “so sánh sâu”.

  • 📖 Cách tôi xây dựng hàm so sánh sâu nhanh nhất của JavaScript

ᯓ🚀 vx.toString

  • Chuyển đổi một schema Valibot thành một chuỗi.

  • Hữu ích cho việc kiểm tra, tạo mã, kiểm tra tính hợp lý.

ᯓ🚀 vx.toType

  • Chuyển đổi một schema Valibot thành một kiểu TypeScript.

  • 🏷️ Bảo tồn siêu dữ liệu schema dưới dạng chú thích JSDoc.

ᯓ🚀 vx.defaultValuemới!

  • Phát sinh một giá trị mặc định có thể cấu hình từ một schema.

  • Thiết kế cho các biểu mẫu dựa trên schema ở phía frontend.

ᯓ🚀 vx.makeLenssắp ra mắt!

  • 🔍 Tập trung vào các giá trị lồng nhau bằng lenses (getter/setter).

  • 🌈 Củng cố luồng điều khiển bằng prisms (bộ so khớp mẫu).

  • ⛰️ Áp dụng cho các bộ chứa bằng traversals (vòng lặp for).

  • 🧱 Ghép chúng lại với nhau bằng composition function.


Tự xây dựng

ᯓ🚀 vx.fold

Tất cả các bộ chuyển đổi có sẵn mà @traversable/valibot cung cấp đều được hỗ trợ bởi vx.fold.

Dưới bề mặt, thư viện sử dụng một trừu tượng gọi là recursion schemes giúp việc cài đặt đệ quy trở nên đơn giảnvui vẻ.

Để minh họa, tôi đã sử dụng nó để cài đặt một trình tạo dữ liệu giả.

Cài đặt này rất tối giản (25 dòng!) mà tôi đã nhúng ở đây, toàn bộ nó:

Lưu ý:

Để giữ mọi thứ đơn giản, đây là một cài đặt phần.

Để có phiên bản mạnh mẽ hơn, hãy xem StackBlitz này.


Phần thưởng: @traversable/valibot-test

@traversable/valibot-test là một thư viện kiểm thử được xây dựng đặc biệt cho các tác giả thư viện đang phát triển trên nền tảng Valibot.

Dưới bề mặt, nó sử dụng một thư viện TypeScript gọi là fast-check để tạo ra các schema Valibot ngẫu nhiên.

Việc có thể tạo ra các schema ngẫu nhiên hóa ra lại rất hữu ích cho kiểm thử fuzz.

Ví dụ, ở đây chúng tôi sử dụng nó để kiểm tra rằng hàm valibotToFaker của chúng tôi luôn tạo ra dữ liệu hợp lệ:

💡 Mẹo:

Cuộn lên trong bảng điều khiển terminal để xem các schema được tạo ra + dữ liệu giả!


Cập nhật

Cập nhật: tính đến ngày hôm qua, @traversable/valibot đã trở thành một phần của hệ sinh thái Valibot!

doc: thêm `@traversable/valibot` và `@traversable/valibot-test` vào hệ sinh thái #1298

ahrjarrett đã đăng vào

Xin chào các nhà bảo trì Valibot!

PR này bổ sung 2 thư viện vào hệ sinh thái:

  1. @traversable/valibot
  2. @traversable/valibot-test

Các thư viện này chủ yếu được xây dựng cho các nhà phát triển đang xây dựng công cụ trên nền tảng Valibot, nhưng cũng có thể được sử dụng cho một trong hơn 10+ bộ chuyển đổi có sẵn mà chúng tôi hiện hỗ trợ.

Rất vui được thảo luận thêm về thư viện nếu bạn có bất kỳ câu hỏi nào!

Xem trên GitHub

Bình luận cho #1298

fabian-hiller đã bình luận vào

Cảm ơn bạn! Và xin lỗi vì phản hồi chậm trễ! Những gì bạn đã xây dựng trông thật tuyệt vời! Chúng ta có nên đăng thông tin trên mạng xã hội không?

Xem trên GitHub

Hệ sinh thái Valibot là cộng đồng schema TypeScript thân thiện và hợp tác nhất, vì vậy tôi rất tự hào khi có thể góp phần vào đây ☺️.


Kết luận

Cảm ơn bạn đã đọc bài viết!

Nếu bạn có bất kỳ phản hồi, yêu cầu tính năng hoặc câu hỏi nào, hãy mở một vấn đề hoặc bắt đầu một cuộc thảo luận.


Liên kết

  1. @traversable/valibot trên GitHub
  2. valibotToFaker demo trên StackBlitz
  3. Demo hoàn chỉnh valibotToFaker trên StackBlitz
Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào