Nhập các loại
Mọi giao diện công khai và loại của SDK đều được xuất lại từ gốc gói và từ một điểm vào oneentry/types chuyên dụng, vì vậy các đường dẫn sâu oneentry/dist/... không còn cần thiết nữa.
Phiên bản ngắn gọn
// before — deep path into the build output
import type { IAttributeSchemaItem, IAttributeSetsEntity } from 'oneentry/dist/attribute-sets/attributeSetsInterfaces';
// now — either of these
import type { IAttributeSchemaItem, IAttributeSetsEntity } from 'oneentry';
import type { IAttributeSchemaItem, IAttributeSetsEntity } from 'oneentry/types';
Cả hai điểm vào đều cung cấp cùng một tập hợp các loại — mọi giao diện và loại của mọi mô-đun, bao gồm cả những loại chia sẻ từ base/utils (IError, IAttributeValues, ILocalizeInfo, IConfig, …).
Tôi nên sử dụng điểm vào nào?
| Nhập từ | Sử dụng khi |
|---|---|
'oneentry' | Bạn đã nhập defineOneEntry (hoặc một trợ giúp) từ gốc — một dòng nhập bao phủ các giá trị và loại. |
'oneentry/types' | Bạn muốn một mô-đun chỉ chứa loại: nó không mang bất kỳ mã chạy nào, điều này giữ cho các tệp chỉ chứa loại (*.d.ts, tệp mô hình chia sẻ, hợp đồng API) không bị nhập giá trị. |
Không có sự khác biệt chức năng nào giữa chúng — hãy chọn cái nào đọc tốt hơn trong dự án của bạn.
Kết hợp giá trị và loại
Điểm vào gốc xuất cả API chạy và các loại, vì vậy một dòng duy nhất thường là đủ:
import { defineOneEntry } from 'oneentry';
import type { IConfig, IError, IProductsEntity } from 'oneentry';
const config: IConfig = { token: 'your-app-token' };
const api = defineOneEntry('https://my-project.oneentry.cloud', config);
const products: IProductsEntity[] | IError = await api.Products.getProducts();
Sử dụng import type (hoặc import { type X }) cho các loại: việc nhập này sẽ bị xóa tại thời điểm biên dịch, vì vậy nó không bao giờ đóng góp bất kỳ điều gì vào gói của bạn.
Nhập sâu vẫn hoạt động
Không có gì bị xóa. Mã hiện có nhập từ oneentry/dist/<module>/<module>Interfaces vẫn biên dịch chính xác như trước — các điểm vào mới là bổ sung, vì vậy bạn có thể di chuyển từng tệp theo tốc độ của riêng bạn.
// still valid
import type { IOrderData } from 'oneentry/dist/orders/ordersInterfaces';
Các loại đến từ đâu?
Mỗi mô-đun SDK đóng góp các giao diện riêng của nó, và tất cả chúng đều nằm dưới cả hai điểm vào:
| Mô-đun | Các loại điển hình |
|---|---|
| Products | IProductsEntity, IProductsResponse, IProductsQueryBase, IFilterParams |
| Pages | IPagesEntity, IPositionBlock, PageType |
| Blocks | IBlocksEntity, BlockType, IContentSlidesResponse |
| Orders | IOrderData, IBaseOrdersEntity, IOrderByMarkerEntity, IRefundRequest |
| Users | IUserEntity, ICartResponse, IWishlistResponse |
| Forms / FormData | IFormsEntity, IFormAttribute, IBodyPostFormData |
| AttributesSets | IAttributeSetsEntity, IAttributeSchemaItem |
Chia sẻ (base/utils) | IError, IConfig, IAttributeValues, IAttributeValue, ILocalizeInfo, LangType |
Danh sách đầy đủ các loại của một mô-đun được tài liệu hóa trên trang giới thiệu của mô-đun đó.
Kiểm tra lỗi
IError là loại đứng sau chế độ "lỗi như giá trị" mặc định của SDK (isShell: true), và nó có sẵn từ gốc như mọi thứ khác:
import type { IError } from 'oneentry';
function isErrorResult(result: unknown): result is IError {
return (
!!result &&
typeof result === 'object' &&
('statusCode' in result || 'message' in result)
);
}
const result = await api.Products.getProducts();
if (isErrorResult(result)) {
console.error('Error:', result.message);
} else {
console.log('Success:', result);
}
🔗 Tài liệu liên quan
- Kích thước gói & Định dạng mô-đun - cách SDK được đóng gói và những gì thực sự được tải
- Bắt đầu - cài đặt và cấu hình