Chuyển JSON sang TypeScript
Dán phản hồi API và nhận ngay interface hoặc type alias TypeScript dùng được luôn, với kiểu lồng nhau, trường optional và union null được tự động suy ra.
Chạy trên trình duyệtKhông cần đăng kýKhông tải lên gì
Cách dùng JSON sang TypeScript
- Dán một mẫu JSON, như phản hồi API, vào ô bên trái hoặc mở tệp
.json. - Đặt tên kiểu gốc (ví dụ
UserhoặcApiResponse). - Chọn khai báo
interfacehoặctypevà bật/tắtexport,readonlyhoặc tất cả trường optional. - Chọn
unknown(an toàn hơn) hoặcanycho những giá trị mà mẫu không thể cho biết, như mảng rỗng và null. - Sao chép mã được tạo hoặc tải xuống dưới dạng tệp
.ts.
Cách suy ra kiểu
- Kiểu nguyên thủy: chuỗi, số và boolean tương ứng với
string,numbervàboolean. - Object lồng nhau trở thành interface riêng được đặt tên theo PascalCase, nên
billing_addresstrở thànhBillingAddress. - Mảng object được gộp thành một kiểu phần tử, đặt tên ở dạng số ít:
userscho raUser[]. Khóa thiếu ở một số phần tử trở thành optional (key?:). - Giá trị null kết hợp với các giá trị khác của khóa đó:
string | null. Khóa chỉ luôn lànullsẽ dùngunknownhoặcany. - Mảng hỗn hợp trở thành mảng union như
(number | string)[]. - Cấu trúc giống hệt nhau chỉ được khai báo một lần và dùng lại, còn các cấu trúc khác nhau nhưng trùng tên sẽ được thêm hậu tố số.
- Khóa không phải định danh hợp lệ, như
"first-name"hay"2fa", được đặt trong dấu nháy.
interface và type
Với cấu trúc object thuần, hai cách gần như có thể thay thế cho nhau. Khai báo interface có thể được mở rộng và gộp, và cho thông báo lỗi trình biên dịch rõ ràng hơn một chút. type alias còn biểu diễn được union và mapped type. Nhiều nhóm dùng interface cho model API và type cho mọi thứ khác; hãy chọn cách mà codebase hoặc linter của bạn (@typescript-eslint/consistent-type-definitions) yêu cầu.
Có kiểu tốt hơn từ mẫu dữ liệu
Kiểu chỉ có thể đầy đủ như mẫu dữ liệu. Hãy dán phản hồi có chứa các trường optional, hoặc mảng có nhiều phần tử đa dạng, để công cụ phát hiện được khóa optional và nullable. Các giá trị như ngày tháng và enum trong JSON chỉ là chuỗi thường; hãy thu hẹp chúng bằng tay sau đó, ví dụ status: 'active' | 'disabled'. Để kiểm tra lúc chạy, hãy kết hợp kiểu được tạo với thư viện schema như Zod.
Câu hỏi thường gặp
JSON của tôi có bị tải lên không?
Thuộc tính optional được phát hiện như thế nào?
?. Với một object duy nhất, mọi khóa đều bắt buộc, trừ khi bạn đánh dấu Tất cả tùy chọn (optional).Nên dùng <code>unknown</code> hay <code>any</code>?
unknown an toàn hơn: TypeScript buộc bạn thu hẹp kiểu giá trị trước khi dùng. any tắt kiểm tra kiểu cho giá trị đó. Chỉ dùng nó nếu bạn định tinh chỉnh kiểu sau.Vì sao ngày ISO lại có kiểu <code>string</code>?
new Date() sau khi phân tích, hãy đổi thuộc tính thành Date trong model của bạn.