JSON sang TypeScript 🔒 Chạy ngay trong trình duyệt — không tải lên bất cứ thứ gì.

Tạo interface TypeScript từ mẫu JSON.

 

Về công cụ này

Gõ tay các interface TypeScript cho khớp một response API vừa tốn công vừa dễ sai tinh vi. Dán một mẫu JSON vào đây và nhận ngay các interface tương ứng. Object lồng nhau được tách thành interface riêng có tên, mảng object được gộp để những key thiếu ở vài phần tử thành tùy chọn, và giá trị có nhiều hơn một kiểu thành union.

Nó chạy hoàn toàn trong trình duyệt bằng một bộ suy luận nhẹ — JSON của bạn không bao giờ được tải lên. Dán, chỉnh tên gốc nếu muốn, và copy kiểu dùng ngay vào dự án.

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

Dữ liệu JSON của tôi có được tải lên đâu không?

Không. Việc phân tích cú pháp và suy luận kiểu dữ liệu diễn ra hoàn toàn trong JavaScript của trình duyệt — JSON của bạn không bao giờ rời khỏi thiết bị.

Nếu các đối tượng trong mảng có trường khác nhau thì công cụ xử lý ra sao?

Nó gộp các key từ mọi đối tượng trong mảng vào một interface duy nhất; key nào không xuất hiện ở tất cả các đối tượng sẽ được đánh dấu tùy chọn bằng `?` thay vì bị loại bỏ.

Điều gì xảy ra với mảng chứa nhiều kiểu dữ liệu khác nhau, ví dụ số và chuỗi?

Nó tạo ra kiểu mảng hợp nhất (union) như `(string | number)[]`, nhờ đó vẫn phản ánh đúng mọi giá trị thực sự có trong mẫu.

Tôi có thể tạo type alias thay vì interface không?

Có, bật 'as type' để chuyển mọi `interface Name {}` được tạo thành `type Name = {}` — hữu ích nếu codebase của bạn ưa dùng type alias.

Điều gì xảy ra nếu tôi dán JSON không hợp lệ?

Công cụ sẽ hiển thị thông báo lỗi kèm đúng số dòng và cột gặp vấn đề, đồng thời cho phép nhảy thẳng đến đó, thay vì chỉ báo chung chung 'invalid JSON'.

Công cụ có xử lý được object lồng nhau và mảng, chứ không chỉ JSON phẳng?

Có. Object lồng nhau sẽ tạo ra interface riêng có tên tự động lấy từ key cha (ví dụ `profile: {...}` sẽ tạo interface `Profile`), còn tên mảng được chuyển về số ít (`roles` → `Role[]`). Mảng các object sẽ tạo ra một interface duy nhất dùng chung cho mọi phần tử, trường nào không có ở mọi phần tử sẽ được đánh dấu `?` — chứ không tạo interface riêng cho từng phần tử.