TypeScript 7’s mpya kompaila unaozingatia Go, tsgo, tayari unaharibu zana maarufu za uendelezaji kama vile ESLint, ts-jest na ts-morph. Uharibifu huu utaendelea hadi API ya programu ya kompaila itakapozingatia katika toleo lijalo la 7.1, kumaanisha kuwa timu zinazotegemea zana hizi zinapaswa kusitisha mipango yoyote ya kuhuisha (upgrade).

Nini kimebadilika katika TypeScript 7

Toleo hili limeleta tsgo, toleo la Go la kichunguzi aina (type-checker) ambalo timu ya TypeScript iliipa jina la siri Project Corsa. Kwa kuhamisha kiini kutoka JavaScript kwenda Go, kompaila unaweza kutoa matokeo ya ujenzi (builds) hadi mara kumi kwa haraka zaidi, jambo ambalo limevutia watumiaji wa mapema wanaotafuta kupunguza dakika kwenye mifumo ya CI (CI pipelines).

Kwa nini zana zinashindwa kufanya kazi

Zana zinazofanya kazi na TypeScript hazizungumzi na kichunguzi aina moja kwa moja. Zinaita seti ya API za ndani zinazotoa taarifa za aina (type information), uchunguzi (diagnostics) na upitiaji wa AST. API hizo zilirekebishwa kwa ajili ya tsgo na bado hazijatulia hadi toleo la 7.1. Matokeo yake ni mfululizo wa hitilafu (crashes) na kushindwa kwa kimya kimya:

  • typescript-eslint – npm inakataa kuifunga pamoja na TypeScript 7; kulazimisha ufungaji huo kunasababisha ESLint kutoa TypeError.
  • ts-jest – inajaribu kuita mbinu za ndani ambazo hazipo tena katika toleo la Go, na kusababisha mchakato wa kubadilisha faili za majaribio (test-file transformation) kusimama.
  • ts-morph – inatarajia API thabiti ili kupitia muundo wa kodi; kwa API ya sasa inaweza kutoa matokeo yasiyo sahihi au kushindwa bila onyo.
  • Monorepos – tsgo inaondoa baadhi ya vigezo vya aina za jumla (generic type parameters), jambo linalosababisha makosa ya aina ambayo yanatokea tu katika miradi mikubwa yenye vifurushi vingi.

Mtiririko wowote wa kazi unaochanganya ulinzi wa kodi (linting), majaribio ya Jest au uchambuzi wa kodi na TypeScript 7 huenda utaona matokeo ya ujenzi (builds) yenye rangi nyekundu.

Nani anaathirika

  • Timu za mbele (Front-end) zinazotumia ESLint kama sehemu ya kila ombi la kutoa kodi (pull request).
  • Huduma za nyuma (Back-end) zinazotegemea ts-jest kwa majaribio ya kitengo (unit testing).
  • Maktaba zinazotumia ts-morph kwa ajili ya kutengeneza kodi au nyaraka.
  • Mashirika yenye mipangilio ya monorepo ambapo utambuzi wa aina (type inference) tayari ni mgumu.

Ikiwa mfumo wako wa CI ulibadilika kuwa mwekundu baada ya kuhuisha TypeScript, chanzo kinaweza kuwa mojawapo ya yaliyoorodheshwa hapo juu.

Njia salama ya uhamisho hadi 7.1

Njia rahisi zaidi ya kubaki na faida za kasi bila kuharibu zana ni kutenganisha hatua ya kichunguzi aina ya haraka kutoka kwenye ujenzi halisi:

  1. Weka toleo kuu la TypeScript kwenye 6.x – hii inahifadhi API thabiti ambayo zana zote zinatarajia.
  2. Ongeza @typescript/native-preview kama utegemezi wa uendelezaji (dev dependency) – kifurushi hiki kinatoa binary ya tsgo kwa ajili ya kichunguzi aina wa haraka katika CI.
  3. Endesha tsgo ukitumia --noEmit kwa ukaguzi wa haraka – inathibitisha aina lakini haitoi faili za matokeo.
  4. Tumia kompaila wa kawaida wa tsc kwa ujenzi halisitsc bado inazalisha JavaScript na inaheshimu API ya 6.x.
npm install -D typescript@^6.9
npm install -D @typescript/native-preview

Sasisha skripti zako za package.json:

{
  "scripts": {
    "typecheck:fast": "tsgo --noEmit",
    "build": "tsc"
  }
}

Kwa mpangilio huu wa pande mbili, unabaki na ongezeko la kasi mara kumi katika CI huku ukihifadhi utangamano na ESLint, ts-jest na ts-morph.

Lini unaweza kuhuisha moja kwa moja hadi 7.0

Ikiwa kodi yako inaita tsc pekee—bila linting, bila Jest, bila ts-morph—basi API isiyotulia haikuathiri. Katika hali hiyo finyu, unaweza kuhamia TypeScript 7 mara moja na kufurahia ongezeko la utendaji bila hatua za ziada.

Vitu vya kuzingatia

  • Toleo la 7.1 – timu ya TypeScript imetoa ishara kwamba API ya programu itafungwa (frozen) katika toleo hili. Ikifika, daraja kati ya tsgo na zana zilizopo litatoweka, na kuruhusu uhamisho safi.
  • Sasisho za zana – endelea kufuatilia matoleo mapya ya typescript-eslint, ts-jest na ts-morph. Watatoa matoleo yanayoendana muda mfupi baada ya 7.1 kutoka.
  • Mpangilio wa CI – kumbuka kubadilisha tsgo --noEmit na wito wa kawaida wa tsc mara API itakapotulia; kifurushi cha preview hakitahitajika tena.

Muhtasari: Mpaka API ya 7.1 itakapofungwa, baki kwenye TypeScript 6.x kwa kompaila wako mkuu, ongeza @typescript/native-preview kwa ukaguzi wa haraka, na endelea kutumia tsc kwa ujenzi. Hii inazuia hitilafu za linting na majaribio huku bado ukipata faida za utendaji za injini mpya ya Go.