Importer les types
Chaque interface et chaque type public du SDK sont réexportés depuis la racine du paquet et depuis un point d'entrée dédié, oneentry/types. Vous n'avez pas besoin de chemins profonds oneentry/dist/....
En bref
// 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';
Les deux points d'entrée exposent le même ensemble de types : chaque interface et chaque type de chaque module, y compris les types partagés de base/utils (IError, IAttributeValues, ILocalizeInfo, IConfig, …).
Quel point d'entrée utiliser ?
| Importer depuis | À utiliser quand |
|---|---|
'oneentry' | Vous importez déjà defineOneEntry (ou un utilitaire) depuis la racine : une seule ligne d'import couvre alors valeurs et types. |
'oneentry/types' | Vous voulez un module contenant uniquement des types. Il n'a pas de code d'exécution, ce qui garde les fichiers de types (*.d.ts, fichiers de modèles partagés, contrats d'API) exempts d'imports de valeurs. |
Ils fonctionnent de la même manière ; choisissez celui qui se lit le mieux dans votre projet.
Mélanger valeurs et types
Le point d'entrée racine exporte à la fois l'API d'exécution et les types : une seule ligne suffit donc souvent :
import { defineOneEntry } from 'oneentry';
import type { IConfig, IError, IProductsResponse } from 'oneentry';
const config: IConfig = { token: 'your-app-token' };
const api = defineOneEntry('https://your-project.oneentry.cloud', config);
const products: IProductsResponse | IError = await api.Products.getProducts();
Utilisez import type (ou import { type X }) pour les types. L'import est effacé à la compilation, il n'ajoute donc rien à votre bundle.
Les imports profonds fonctionnent toujours
Les imports depuis oneentry/dist/<module>/<module>Interfaces continuent de compiler. Les points d'entrée racine et oneentry/types sont des ajouts : vous pouvez migrer fichier par fichier.
// still valid
import type { IOrderData } from 'oneentry/dist/orders/ordersInterfaces';
D'où viennent les types ?
Chaque module du SDK apporte ses propres interfaces, et toutes sont disponibles depuis les deux points d'entrée :
| Module | Types typiques |
|---|---|
| Products | IProductsEntity, IProductsResponse, IProductsQueryBase, IFilterParams |
| Pages | IPagesEntity, IPositionBlock, PageType |
| Blocks | IBlockEntity, BlockType, IBlockSlidesResponse |
| Orders | IOrderData, IBaseOrdersEntity, IOrderByMarkerEntity, IRefundRequest |
| Users | IUserEntity, ICartResponse, IWishlistResponse |
| Forms / FormData | IFormsEntity, IFormAttribute, IBodyPostFormData, IFormsDataFilter, FormDataStatus |
| AttributesSets | IAttributeSetsEntity, IAttributeSchemaItem |
| Search | IGlobalSearchResponse, IGlobalSearchGroup, TGlobalSearchEntityType |
Partagés (base/utils) | IError, IConfig, IAttributeValues, IAttributeValue, IAttributeFile, ITypedAttributeValue, ILocalizeInfo, LangType, IVectorSearchResponse |
La liste complète des types d'un module est documentée sur la page d'introduction de ce module.
Vérifier les erreurs
IError est le type sur lequel repose le mode par défaut du SDK « les erreurs comme valeurs » (isShell: true). Importez-le depuis la racine comme n'importe quel autre type :
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);
}
Voir aussi
- Taille du bundle et formats de module : comment le SDK est empaqueté et ce qui est réellement chargé
- Prise en main : installation et configuration