Sử dụng pnpm
Do cơ chế cô lập dependency nghiêm ngặt của pnpm,@inertiajs/core không truy cập được tại node_modules/@inertiajs/core. Thay vào đó, package nằm lồng trong .pnpm/, khiến TypeScript module augmentation không thể resolve module.
Bạn có thể khắc phục bằng cách cấu hình pnpm để hoist package. Thêm cấu hình sau vào file .npmrc rồi chạy pnpm install.
@inertiajs/core làm dependency trực tiếp của project.
Cấu hình toàn cục
Bạn có thể cấu hình type của Inertia trên toàn cục bằng cách augment interfaceInertiaConfig trong module @inertiajs/core. Việc này thường được thực hiện trong file global.d.ts ở thư mục root hoặc thư mục types của project.
Câu lệnh
import (hoặc export {}) là bắt buộc để biến file này thành module. Nếu thiếu nó, declare module sẽ thay thế định nghĩa module thay vì augment module. tsconfig.json cũng phải include các file .d.ts, vì vậy hãy đảm bảo mảng include có pattern như "resources/js/**/*.d.ts".Shared page props
Tùy chọnsharedPageProps định nghĩa type dữ liệu được share với mọi page. Với cấu hình này, page.props.auth và page.props.appName có type đúng ở mọi nơi.
Flash data
Tùy chọnflashDataType định nghĩa type flash data trong ứng dụng.
Giá trị lỗi
Mặc định validation error value có typestring. Bạn có thể cấu hình TypeScript để mong đợi mảng cho nhiều lỗi trên mỗi field.
Layout Props
Tùy chọnlayoutProps khai báo type dữ liệu setLayoutProps() nhận. namedLayoutProps khai báo type dữ liệu setLayoutProps('name', props) nhận, key theo layout name.
setLayoutProps({ title: 'Dashboard' }) được type-check, còn setLayoutProps('app', { theme: 'dark' }) validate cả layout name lẫn props.
Bạn cũng có thể truyền generic type parameter trực tiếp vào setLayoutProps để khai báo type ad-hoc mà không cấu hình interface InertiaConfig toàn cục.
Phiên bản tiếp theo của Laravel
Wayfinder có thể tự động
sinh các type này bằng cách phân tích ứng dụng Laravel. Nó
sinh TypeScript type cho shared props, page props, form request và
Eloquent model. Phiên bản này hiện ở giai đoạn beta.
Page component
Bạn có thể khai báo type cho kết quảimport.meta.glob để tăng type safety khi resolve page component.
Page props
Bạn có thể khai báo kiểu cho prop riêng của từng trang bằng cách truyền generic vàousePage(). Chúng được gộp với sharedPageProps toàn cục, nhờ đó bạn có autocomplete và type checking cho cả dữ liệu shared lẫn dữ liệu riêng của trang.
Form helper
Form helper nhận generic type parameter cho form data và error handling type-safe. Điều này cung cấp autocomplete cho form field/error và ngăn lỗi chính tả tên field.Dữ liệu lồng nhau và mảng
Form type hỗ trợ đầy đủ object lồng nhau và mảng. Bạn có thể truy cập và cập nhật field lồng nhau bằng dot notation, còn error key sẽ tự động có kiểu tương ứng.Component Form
Component<Form> nhận generic type parameter cho slot prop type-safe. Trong React có thể truyền generic trực tiếp. Trong Vue và Svelte, bạn có thể dùng helper createForm để tạo typed form component.
errors, setError, clearErrors và slot prop khác tham chiếu form field.
useFormContext
FunctionuseFormContext() cũng nhận generic type parameter, cung cấp quyền truy cập form context type-safe từ child component.
HTTP Helper
HookuseHttp nhận hai generic type parameter: form data type và default response type tùy chọn.
Layout Callbacks
TypeLayoutCallback cung cấp type safety cho layout callback. Callback nhận props của page (được khai báo type qua cấu hình sharedPageProps toàn cục) và nên trả về layout definition hợp lệ.
Ghi nhớ state
HookuseRemember nhận generic type parameter để lưu local state an toàn kiểu, cung cấp autocomplete và đảm bảo giá trị khớp với kiểu mong đợi.
Khôi phục state
Phương thứcrouter.restore() nhận generic để khai báo type state được khôi phục từ history.
Router request
Các phương thức router nhận generic để khai báo kiểu cho request data, giúp type checking dữ liệu được gửi đi.Flash data theo scope
Phương thứcrouter.flash() nhận generic để khai báo kiểu cho flash data riêng theo trang hoặc section, tách biệt với cấu hình flashDataType toàn cục.
Client-side visits
Các phương thứcrouter.push() và router.replace() nhận generic để khai báo type props của client-side visit.