BrasilAPI / cep-promise

Busca por CEP integrado diretamente aos serviços dos Correios, ViaCEP e outros (Node.js e Browser)
MIT License
2.89k stars 316 forks source link

AvailableProviders declaration from 'enum' to 'type' #261

Closed arturdonda closed 7 months ago

arturdonda commented 1 year ago

Bom dia pessoal,

Sugestão

Sugiro uma simples alteração no index.d.ts para substituir a declaração de AvailableProviders de ENUM para TYPE.

Motivo

Estava usando a API e reparei que o enum AvailableProviders estava undefined, o que causava um erro ao usar o enum para definir a lista de provedores:

image

TypeError: Cannot read properties of undefined (reading 'brasilapi')


A alternativa é passar os provedores como uma lista de strings. O problema é que o TS também acusa erro por entender que a string não é do tipo do enum:

image


É possível contornar o erro tipando o objeto de configuração ou a lista de provedores:

image

image


Porém, acredito que seria melhor alterar a declaração de AvailableProviders de ENUM para TYPE, o que possibilita passar a lista de provedores como string sem nenhum erro e sem nenhum import adicional (e com a vantagem adicional do intellisense):

image



referências: https://lukasbehal.com/2017-05-22-enums-in-declaration-files/ https://stackoverflow.com/questions/62109542/enums-in-typescript-d-ts-file

wellwelwel commented 1 year ago

Fala @arturdonda, 🙋🏻‍♂️

Apesar do index.d.ts não afetar o código principal (JavaScript), essa mudança quebraria o código para qualquer projeto que use TypeScript a partir do enum AvailableProviders:

import cep, { AvailableProviders } from 'cep-promise';

cep('05010000', {
  providers: [AvailableProviders.correios],
});

Se possível, dá uma olhada no PR #262 onde essa modificação é feita permitindo o uso de ambas as formas 🚀