Aller au contenu principal

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 :

ModuleTypes typiques
ProductsIProductsEntity, IProductsResponse, IProductsQueryBase, IFilterParams
PagesIPagesEntity, IPositionBlock, PageType
BlocksIBlockEntity, BlockType, IBlockSlidesResponse
OrdersIOrderData, IBaseOrdersEntity, IOrderByMarkerEntity, IRefundRequest
UsersIUserEntity, ICartResponse, IWishlistResponse
Forms / FormDataIFormsEntity, IFormAttribute, IBodyPostFormData, IFormsDataFilter, FormDataStatus
AttributesSetsIAttributeSetsEntity, IAttributeSchemaItem
SearchIGlobalSearchResponse, 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​