Kama umewahi kutuma marekebisho ya hitilafu (bugfix) ya mistari miwili kwenye TypeScript monorepo na kutazama mchakato wako wa ujenzi (build pipeline) ukitumia dakika kumi kufanya ukaguzi wa aina (type checking), tayari unaelewa tatizo. Ucheleweshaji huo siyo bundling. Siyo minification. Ni wakati ambapo TypeScript inajaribu kuandika faili zako za maelezo (declaration files). Kabla ya kuweza kutoa faili moja la .d.ts, kiondoa (compiler) lazima kiondoe mchanganuo kamili wa aina (type graph). Inachunguza imports, inatathmini generics, na kukisia aina za kurudisha (return types) ambazo zinaweza kuwa ndani ya tabaka tatu za utegemezi (dependency layers). Faili moja uliyobadilisha inagusa faili nyingine, ambayo inagusa ya tatu, na ghafla kiondoa kinafanya kazi ya upelelezi kwenye repository nzima ili tu kuelezea kile ambacho function yako inarudisha.
TypeScript 6.0 inaleta isolatedDeclarations ili kuvunja tabia hiyo.
Kikwazo Halisi
Faili za maelezo (declaration files) ni mkataba wa hadhara wa kodi yako. Mwingine mwanalishi anapoimport package yako, TypeScript inasoma faili za .d.ts, siyo chanzo (source). Kutoa faili hizo kwa usahihi inamaanisha kiondoa hakiwezi kuruka ukaguzi wa aina (type checker). Lazima ijue kila umbo, kila union, na kila aina ya kurudisha inayokatiwa kabla ya kuandika mstari mmoja wa matokeo.
Katika mradi mdogo wenye faili hamsini, hili hutokea papo hapo. Katika monorepo kubwa yenye moduli maelfu, ni jinamizi la mfululizo. Badilisha aina ya utility kwenye package ya msingi, na kiondoa kitarudi kwenye kila mtumiaji ili kuhakikisha kuwa aina zilizokatiwa bado zinafaa. Muda wa ujenzi (build time) huongezeka kulingana na kina cha utegemezi, siyo tu idadi ya faili. Marekebisho madogo (trivial refactor) yanaweza kusababisha ukokotoaji upya wa mchanganuo mzima (full-graph recomputation). Timu mara nyingi hukubali hili kama jambo lisiloepukika. Si hivyo.
Jinsi isolatedDeclarations Inavyofanya Kazi
Bendera (flag) mpya hii inabadilisha mkataba kati yako na kiondoa (compiler). Badala ya kuiomba TypeScript kukisia aina za exports zako, unaziandika (annotate) mwenyewe. Mabadiliko hayo pekee yanaondoa hitaji la maarifa ya jumla (global knowledge). Kiondoa hakih
