TypeScript 7 “isolated declarations” સાથે આવ્યું છે, જે એક કમ્પાઈલર મોડ છે જે મોટા monorepos ને ફાઇલોને સમાંતર (parallel) રીતે કમ્પાઈલ કરવાની મંજૂરી આપે છે અને ડેવલપર ફીડબેક લૂપ્સને ઝડપી બનાવે છે.
અત્યારે isolated declarations શા માટે મહત્વના છે
આ રિલીઝ સુધી, TypeScript કમ્પાઈલર declaration ફાઇલો (.d.ts) ને સિંગલ થ્રેડ પર પ્રોસેસ કરતું હતું. જે કોડબેઝ સેંકડો પેકેજોમાં ફેલાયેલા હોય, ત્યાં તે સ્ટેપ ઘણીવાર આખી build pipeline ને ધીમી કરી દેતું હતું. કોર્સ (cores) વચ્ચે type-checking ના કામને વિભાજિત કરીને, isolated declarations એ ટીમો માટે build સમયમાં મોટો ઘટાડો કરે છે જે તેમની બધી લાઇબ્રેરીઓ એક જ રિપોઝિટરીમાં રાખે છે.
CI jobs ચલાવતી અથવા ઝડપી local rebuilds ની જરૂર હોય તેવી કોઈપણ સંસ્થા માટે તેની અસર તરત જ જોવા મળશે.
parallel type checking તરફનો માર્ગ
Microsoft એ વર્ષો પહેલા incremental compilation ઉમેર્યું હતું, પરંતુ declaration ફેઝ સિક્વન્શિયલ (sequential) રહ્યો કારણ કે ફાઇલો એકબીજા પર નિર્ભર હતી. જેમ જેમ monorepos વધતા ગયા, તેમ સિંગલ-થ્રેડેડ પાસ એક મોટો અવરોધ (bottleneck) બની ગયો. Isolated declarations ડિપેન્ડન્સી ચેઇનને તોડે છે, દરેક ફાઇલના public surface ને સ્વતંત્ર યુનિટ તરીકે ગણે છે અને તેમને એકસાથે વેલિડેટ કરે છે.
કોને ફાયદો થશે, કોને નહીં
- મોટા monorepos ધરાવતી Dev ટીમો – build સમયમાં સૌથી મોટો ઘટાડો જોશે, ખાસ કરીને મલ્ટીપલ CPU cores ધરાવતા CI agents પર.
- નાના પ્રોજેક્ટ્સ અથવા સિંગલ-પેકેજ એપ્સ – કદાચ માત્ર થોડો જ ફાયદો અનુભવશે કારણ કે declaration સ્ટેપ પહેલેથી જ કુલ compile સમયનો ખૂબ જ નાનો ભાગ લે છે.
- મર્યાદિત હાર્ડવેર ધરાવતી ટીમો – સમાન કારણસર સમાન નજીવો સુધારો જોવા મળશે.
વ્યાપક TypeScript 7 રોલઆઉટ
Isolated declarations સુરક્ષા-કેન્દ્રિત અપગ્રેડ્સના સેટ સાથે આવે છે:
- Strict mode refinements –
strictIndexSignaturesજેવા નવા ચેક્સ જ્યારે કોડ સંભવિત રીતે ખૂટતી ઓબ્જેક્ટ કી (object key) ને એક્સેસ કરે ત્યારે ચેતવણી આપે છે. - Named tuple elements – ડેવલપર્સ tuple પોઝિશનને લેબલ કરી શકે છે, જેનાથી API signatures self-documenting બને છે.
- Enhanced
satisfiesoperator – જટિલ generics નું વધુ સારું હેન્ડલિંગ વાંચનક્ષમતા (readability) ને બગાડ્યા વિના type inference માં સુધારો કરે છે. - Async context propagation – AsyncContext API માટેનું સપોર્ટ asynchronous call stacks ના ટ્રેસિંગમાં મદદ કરે છે.
- Decorator metadata – TC39 પ્રપોઝલ runtime કોડને class decorations ની તપાસ કરવાની મંજૂરી આપે છે.
- Explicit variance annotations – Generic parameters પર
+અથવા-નો ઉપયોગ કરવાથી covariance અથવા contravariance નો સંકેત મળે છે, જે type checker ની ચોકસાઈ વધારે છે.
આ ઉમેરાઓ "type-first" લેંગ્વેજ તરીકે TypeScript ની પ્રતિષ્ઠાને મજબૂત બનાવે છે, પરંતુ isolated declarations એ એકમાત્ર ફીચર છે જે સીધી રીતે એ સમસ્યાને ઉકેલે છે જે કોડબેઝના કદ સાથે વધતી જાય છે.
આગળ શું જોવું
નિષ્કર્ષ
Isolated declarations monorepo-heavy ટીમોને ઝડપી builds આપે છે. જે સંસ્થાઓ CI મિનિટ્સ માટે ચૂકવણી કરે છે અથવા ધીમા local rebuilds થી પરેશાન છે, તેમના માટે TypeScript 7 માં અપગ્રેડ કરવું એ ઓછું જોખમ ધરાવતું પગલું છે જે માપી શકાય તેવા સમય અને ખર્ચની બચત લાવે છે. બાકીનું રિલીઝ ઉપયોગી સેફ્ટી નેટ્સ ઉમેરે છે, પરંતુ parallel type-checking એ મુખ્ય ફીચર છે જે આધુનિક JavaScript ડેવલપમેન્ટના સ્કેલેબિલિટી પડકારનો સીધો જવાબ આપે છે.
