molszanski / iti

~1kB Dependency Injection Library for Typescript and React with a unique support of async flow
https://itijs.org
MIT License
129 stars 6 forks source link

If you add to much dependencies it gives "Type instantiation is excessively deep and possibly infinite" #42

Open Vardan-bg opened 1 year ago

Vardan-bg commented 1 year ago

If you add too much dependencies it gives "Type instantiation is excessively deep and possibly infinite" When I added last dependency which just and empty object (to avoid circular dependency case) it gives ts error. image

https://stackblitz.com/edit/typescript-s5bnzn?file=index.ts

molszanski commented 1 year ago

Hi there! Yes, I am aware of this TS limitation :/ https://itijs.org/docs/patterns-and-tips#ts2589-type-instantiation-is-excessively-deep-and-possibly-infinite

molszanski commented 1 year ago

Maybe those suggestions can help you for now? I am trying a new version that could trigger internal typescript type caching to circumvent this and another problem like that. But no luck so far.

molszanski commented 1 year ago

Let me know if any of the suggested solutions work for you :)

jacoobes commented 1 year ago

Could opting for some typescript library types help? for example, the export type UnPromisify<T> = T extends Promise<infer U> ? U : T Could be potentially replaced with Awaited<T> Since Awaited is nested,

export type UnpromisifyObject<T> = {
  [K in keyof T]: UnPromisify<T[K]>
}

Could be replaced in favor of Awaited<T>, where T extends {}

molszanski commented 1 year ago

Thanks @jacoobes, will check it out! 🚀

Vardan-bg commented 1 year ago

Hi there! Yes, I am aware of this TS limitation :/ https://itijs.org/docs/patterns-and-tips#ts2589-type-instantiation-is-excessively-deep-and-possibly-infinite

thanks grouping helped)

jacoobes commented 1 year ago

5.1 typescript

https://github.com/microsoft/TypeScript/pull/53246

👀 you might want to see if this optimization can happen

molszanski commented 1 year ago

@jacoobes lovely!