Pular para o conteúdo principal

Importando Tipos

Toda interface pública e tipo do SDK é re-exportada a partir da raiz do pacote e de um ponto de entrada dedicado oneentry/types, portanto, caminhos profundos oneentry/dist/... não são mais necessários.

A versão curta

// 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';

Ambos os pontos de entrada expõem o mesmo conjunto de tipos — cada interface e tipo de cada módulo, incluindo os compartilhados de base/utils (IError, IAttributeValues, ILocalizeInfo, IConfig, …).

Qual ponto de entrada devo usar?

Importar deUse-o quando
'oneentry'Você já importa defineOneEntry (ou um helper) da raiz — uma linha de importação cobre valores e tipos.
'oneentry/types'Você quer um módulo apenas de tipos: ele não carrega nenhum código em tempo de execução, o que mantém arquivos apenas de tipos (*.d.ts, arquivos de modelo compartilhados, contratos de API) livres de qualquer importação de valor.

Não há diferença funcional entre eles — escolha o que for mais legível em seu projeto.

Misturando valores e tipos

O ponto de entrada raiz exporta tanto a API em tempo de execução quanto os tipos, então uma única linha é frequentemente suficiente:

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

Use import type (ou import { type X }) para tipos: a importação é apagada em tempo de compilação, então nunca contribui com nada para seu bundle.

Importações profundas ainda funcionam

Nada foi removido. O código existente que importa de oneentry/dist/<module>/<module>Interfaces continua compilando exatamente como antes — os novos pontos de entrada são adições, então você pode migrar arquivo por arquivo no seu próprio ritmo.

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

De onde vêm os tipos?

Cada módulo do SDK contribui com suas próprias interfaces, e todas elas acabam sob ambos os pontos de entrada:

MóduloTipos típicos
ProductsIProductsEntity, IProductsResponse, IProductsQueryBase, IFilterParams
PagesIPagesEntity, IPositionBlock, PageType
BlocksIBlocksEntity, BlockType, IContentSlidesResponse
OrdersIOrderData, IBaseOrdersEntity, IOrderByMarkerEntity, IRefundRequest
UsersIUserEntity, ICartResponse, IWishlistResponse
Forms / FormDataIFormsEntity, IFormAttribute, IBodyPostFormData
AttributesSetsIAttributeSetsEntity, IAttributeSchemaItem
Compartilhado (base/utils)IError, IConfig, IAttributeValues, IAttributeValue, ILocalizeInfo, LangType

A lista completa dos tipos de um módulo está documentada na página de introdução desse módulo.

Verificando erros

IError é o tipo por trás do modo padrão "erros como valores" do SDK (isShell: true), e está disponível a partir da raiz como tudo o mais:

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

🔗 Documentação Relacionada