Aller au contenu principal

Importation des Types

Chaque interface publique et type du SDK est ré-exporté depuis la racine du package et depuis un point d'entrée dédié oneentry/types, donc les chemins profonds oneentry/dist/... ne sont plus nécessaires.

La version courte

// 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 type de chaque module, y compris ceux partagés de base/utils (IError, IAttributeValues, ILocalizeInfo, IConfig, …).

Quel point d'entrée devrais-je utiliser ?

Importer depuisUtilisez-le quand
'oneentry'Vous importez déjà defineOneEntry (ou un helper) depuis la racine — une ligne d'import couvre les valeurs et les types.
'oneentry/types'Vous voulez un module uniquement de types : il ne contient aucun code d'exécution, ce qui garde les fichiers uniquement de types (*.d.ts, fichiers de modèle partagés, contrats API) exempts de toute importation de valeur.

Il n'y a pas de différence fonctionnelle entre eux — choisissez celui qui s'intègre 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, donc une seule ligne est souvent suffisante :

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();

Utilisez import type (ou import { type X }) pour les types : l'importation est effacée au moment de la compilation, donc elle ne contribue jamais à votre bundle.

Les imports profonds fonctionnent toujours

Rien n'a été supprimé. Le code existant qui importe depuis oneentry/dist/<module>/<module>Interfaces continue de se compiler exactement comme avant — les nouveaux points d'entrée sont des ajouts, donc vous pouvez migrer fichier par fichier à votre propre rythme.

// still valid
import type { IOrderData } from 'oneentry/dist/orders/ordersInterfaces';

D'où viennent les types ?

Chaque module SDK contribue ses propres interfaces, et toutes finissent sous les deux points d'entrée :

ModuleTypes typiques
ProductsIProductsEntity, IProductsResponse, IProductsQueryBase, IFilterParams
PagesIPagesEntity, IPositionBlock, PageType
BlocksIBlocksEntity, BlockType, IContentSlidesResponse
OrdersIOrderData, IBaseOrdersEntity, IOrderByMarkerEntity, IRefundRequest
UsersIUserEntity, ICartResponse, IWishlistResponse
Forms / FormDataIFormsEntity, IFormAttribute, IBodyPostFormData
AttributesSetsIAttributeSetsEntity, IAttributeSchemaItem
Partagé (base/utils)IError, IConfig, IAttributeValues, IAttributeValue, ILocalizeInfo, LangType

La liste complète des types d'un module est documentée sur la page d'introduction de ce module.

Vérification des erreurs

IError est le type derrière le mode par défaut "erreurs en tant que valeurs" du SDK (isShell: true), et il est disponible depuis la racine comme tout le reste :

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);
}

🔗 Documentation Connexe