Công cụ tạo TypeScript Interface từ JSON

Dán một mẫu JSON như phản hồi API hay file cấu hình, bạn sẽ nhận ngay các TypeScript interface sẵn sàng dùng, với kiểu lồng nhau, thuộc tính optional và union type.

Cập nhật
Khai báo dưới dạng
Mảng

Dữ liệu của bạn không bao giờ rời khỏi máy tính. Mọi xử lý diễn ra 100% cục bộ trong trình duyệt của bạn.

Công cụ này có hữu ích không?0.0 0 lượt đánh giá
Chuyển mảng JSON sang CSV online miễn phíJSON sang CSV →

Cách dùng JSON sang TypeScript

  1. Dán một mẫu JSON đại diện, ví dụ phản hồi được sao chép từ tab network của trình duyệt.
  2. Đặt tên kiểu gốc (ví dụ User hoặc ApiResponse).
  3. Chọn interface hoặc type, cú pháp mảng, và có muốn export hay đánh dấu thuộc tính readonly không.
  4. Sao chép mã đã tạo vào file .ts hoặc tải về.

Công cụ chuyển JSON sang TypeScript làm gì?

Công cụ suy luận kiểu tĩnh từ dữ liệu mẫu. Thay vì viết tay một interface cho mỗi phản hồi API, bạn dán một phản hồi thực tế và nhận về các khai báo TypeScript tương ứng: mỗi object lồng nhau có một interface riêng, mảng có kiểu rõ ràng, và dùng union khi giá trị khác nhau. Đây là cách nhanh nhất để có autocomplete và kiểm tra kiểu lúc biên dịch cho dữ liệu nhận từ REST API, webhook hay file cấu hình JSON.

Cách suy luận kiểu

Giá trị JSONKiểu TypeScript
"text"string
42, 3.14number
trueboolean
nullnull (kết hợp với kiểu khác, ví dụ string | null)
{ … }Một interface có tên (key profile → Profile)
["a", "b"]string[]
[1, "two"](number | string)[]
[]unknown[] (không có mẫu để suy luận)

Mảng các object được gộp lại

Khi một mảng chứa nhiều object, công cụ gộp chúng thành một interface duy nhất thay vì chỉ lấy phần tử đầu tiên. Key chỉ xuất hiện ở một số phần tử sẽ trở thành optional (archived?: boolean), còn key có giá trị khác nhau giữa các phần tử sẽ nhận một union type (license: string | null). Interface của phần tử mảng được đặt tên theo dạng số ít của key: repos → Repo, categories → Category. Các cấu trúc giống nhau xuất hiện ở nhiều nơi chỉ được khai báo một lần và tái sử dụng.

interface hay type?

Với cấu trúc object, hai cách gần như có thể thay thế cho nhau. interface có thể mở rộng bằng extends và gộp khai báo khi khai báo lại, đồng thời thường cho thông báo lỗi dễ hiểu hơn; còn type alias có thể biểu diễn union, tuple và mapped type. Nhiều team dùng interface cho mô hình dữ liệu, bạn nên chọn cách phù hợp với quy tắc lint của dự án (ví dụ @typescript-eslint/consistent-type-definitions).

Giới hạn của suy luận: hãy kiểm tra lại kết quả

Mẫu dữ liệu chỉ phản ánh những gì có mặt trong đó. Trường có giá trị null trong mẫu sẽ được gán kiểu null; hãy sửa thành kiểu thực tế (ví dụ string | null). Ngày tháng thường đến dưới dạng chuỗi ISO và được gán kiểu string, vì JSON không có kiểu ngày. Các key không phải định danh hợp lệ, như social-links, sẽ tự động được đặt trong dấu nháy. Với việc kiểm tra dữ liệu không đáng tin lúc runtime, hãy kết hợp các kiểu này với một thư viện validate schema như Zod. Bạn nên làm gọn mẫu trước bằng JSON Formatter, hoặc chuyển cấu hình YAML bằng YAML to JSON trước khi tạo kiểu.

Cũng được tìm dưới tên: json sang ts, json to typescript, chuyển json sang interface typescript, tạo interface từ json, json2ts online, tạo type từ json, typescript interface generator.

Các công cụ dùng kèm tốt với JSON sang TypeScript

  • CSV sang JSON — Dán CSV hoặc TSV để nhận mảng JSON gồm các object.
  • SVG sang JSX — Dán SVG từ Figma, Illustrator hoặc bộ icon và nhận ngay một React component (JSX hoặc TSX) sẵn sàng sử dụng, kèm bản xem trước icon an toàn.
  • Chuyển cURL sang Code — Dán lệnh curl từ tài liệu API hoặc “Copy as cURL” trong DevTools của trình duyệt, rồi nhận ngay đoạn code chạy được cho sáu ngôn ngữ, giữ nguyên header, body và thông tin xác thực.
  • Kiểm tra JSON Schema — Dán schema và dữ liệu JSON để xem chính xác giá trị nào vi phạm quy tắc nào, hoặc tạo schema ban đầu từ dữ liệu mẫu.

Câu hỏi thường gặp

Nên dùng interface hay type cho dữ liệu JSON?
Cả hai đều ổn với cấu trúc object đơn giản. Interface hỗ trợ gộp khai báo và extends; type alias còn biểu diễn được union và mapped type. Hãy chọn cách mà style guide của codebase bạn ưu tiên. Nút chuyển đổi sẽ đổi toàn bộ kết quả.
Thuộc tính optional được phát hiện như thế nào?
Trong mảng các object, thuộc tính bị thiếu ở ít nhất một phần tử sẽ được đánh dấu optional bằng ?. Bạn cũng có thể đặt mọi thuộc tính nullable thành optional bằng ô chọn bên dưới kết quả.
Vì sao một thuộc tính lại có kiểu null?
Vì nó luôn là null trong mọi mẫu có chứa nó, nên không có thông tin về kiểu thực sự của nó. Hãy thay null bằng kiểu mong muốn, ví dụ string | null, hoặc dán một mẫu có giá trị đầy đủ.
Công cụ có xử lý JSON lồng nhau sâu không?
Có. Mỗi object lồng nhau trở thành một interface có tên riêng, được tham chiếu từ object cha, và các cấu trúc giống nhau chỉ được khai báo một lần.
JSON của tôi có được gửi lên máy chủ không?
Không. Việc tạo kiểu diễn ra hoàn toàn trên trình duyệt của bạn, nên bạn có thể yên tâm dán phản hồi từ các API nội bộ.
Tôi có thể cài JSON sang TypeScript như một ứng dụng web và dùng khi không có mạng không?
Có. JSON sang TypeScript là một ứng dụng web (PWA) có thể cài đặt — cài trực tiếp từ trình duyệt, không cần tải từ cửa hàng ứng dụng. Trên Chrome hoặc Edge (Windows, macOS, Linux, ChromeOS) hoặc Android, bấm Cài đặt ứng dụng ở đầu trang này; trên iPhone và iPad, dùng Chia sẻ → Thêm vào Màn hình chính; trên Mac, dùng File → Add to Dock trong Safari 17 trở lên. Sau đó ứng dụng mở trong cửa sổ riêng với biểu tượng riêng, và vì chạy hoàn toàn trên trình duyệt nên vẫn hoạt động khi không có mạng. Firefox trên máy tính không thể cài ứng dụng web. Cách cài đặt hoạt động thế nào.

Công cụ liên quan