Node.js + typecript = asla daha fazla javascript
“Bir daha asla JavaScript!”

Golo Roden, yerel web GmbH'nin kurucusu ve CTO'sudur. Olaylara ve hizmetlere dayalı olarak dağıtılmış mimarilere özellikle dikkat ederek web ve bulut uygulamalarının ve arıların anlayışı ve geliştirilmesi ile ilgilidir. Yol gösterici ilkesi, yazılımın gelişiminin kendi başına bir son olmaması, ancak her zaman aşağıda bir profesyonellik izlemesi gerektiğidir.
Bu cümleyi Node.js ile çalıştığım son on beş yılda duydum. Suçlamaların listesi uzundu: JavaScript gerçek bir programlama dili değil. JavaScript, kurumsal alandaki karmaşık projeler için uygun değildir. JavaScript değil, JavaScript bu değil. Tabii ki, on beş yıl içinde JavaScript'in sevdiği bazılarıyla da tanışacaksınız, ancak çoğu geliştirici JavaScript Rundheraus'u reddediyor. Birçoğu bunu sadece zorunluluktan yazıyor, ancak mahkumiyetle değil. JavaScript garip, hala yaygın bir görüş. Ayrıca katılıyorsanız, bugün sizin için iyi haberlerim var: Bitti, bir daha asla JavaScript yazmanız gerekmeyecek!
Belki şimdi diyorlar:
“Şey, bu tamamen doğru değil, çünkü bugün bile JavaScript yazmam gerekmiyor. Sonuçta, bir tür senaryo var.”
Ve bu yüzden doğru. Microsoft on iki yıl önce TypeScript'i piyasaya sürdüğünden beri, modern web geliştirmede pratik olarak fiili bir dil haline geldi. Ve bu bir tesadüf değil, çünkü TypeScript çok iyi: çok iyi isteğe bağlı statik sistemle başlamak ve çok güvenilir derleyiciyi iyi düşünmek. TypeScript artık günlük çalışmalarını düşünemiyor. Araçlar için değilse, ışığın olduğu yerlerde gölgeli olduğu bilinmektedir.
Önerilen editoryal içerik
Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.
YouTube videosu her zaman yüklenir
YouTube videosu artık yüklüyor
Node.js + Tipsecript: Asla JavaScript!
Deneyimlerimden, TypeScript ile bir Node.js projesi koyan eğlenceli şeyler olduğunu biliyorum. TypeScript'i kurmak ve yapılandırmak yeterli değildir, ancak TypeScript ile her şeyi de almalıdır: kodun deformasyonundan kaplamaya kadar testlere kadar. Tüm inşaat blokları, her şey birbirine uyum sağlayacak ve uyumlu olacak şekilde yapılandırılana kadar, çok zaman geçirir.
Düğüm komut dosyası neden yerli desteklemiyor?
Son on iki yılda birkaç kez merak eden tek kişi ben olmayacağım, neden node.js bir tür komut dosyası değil yerli Destekler. Neden Düğüm Evreninde bir geliştirici olarak bir geliştirici olarak, Typscript olması gerektiği gibi çalışana kadar her zaman bu son derece sinir bozucu yumurta dansı yapmanız gerekiyor? Node.js tipi komut dosyası ev tarafından desteklenmesi çok daha kolay olmaz mıydı? Böylece tüm derleyiciyi kaydedebilirsiniz, testler TypeScript ile otomatik olarak çalışır ve diğer tüm araç muhtemelen hızlı bir şekilde değişir. Çünkü TypeScript temelde doğru çalışırsa, geri kalanı muhtemelen hızlı bir şekilde takip ederdi. Öyleyse: Node.js -hashade NODE TÜRÜNÜN NATIRI DESTEKLEME UYGULANMASI BÜYÜK OLMADI? İleriye büyük bir adım olmaz mıydı?
Ve bununla büyük vaat edilen haberlere geliyoruz: Temmuz 2024'ün başından itibaren düğüm TypeScript için yerel destek içeriyor!
Çünkü birçoğu muhtemelen nasıl çalıştığını merak ediyor ve her şeyden önce Kuyu Bazı cevaplarım var. Her şeyden önce: TypeScript desteği şu anda hala deneyseldir, sadece gece yapılarında mevcuttur ve Node.js, yani uygun bir bayrak belirtmeniz gerekir. --experimental-strip-types. Her şey kesinlikle normal bir versiyonda ve belki de Ekim ayında beklemesi gereken Node.js 23'te de dahil edilecektir.
Tip soyma nasıl çalışır
Uygulama başlangıçta çok basittir: Koddaki tür türleri yürütme aşamasında reddedilir. Bu, tip testinin olmadığı anlamına gelir. Bu takım düğümü tarafından bilinçli bir karardı. Tip testine sahip olmak istiyorsanız, daktilo yazılmış derleyici hala gereklidir. Bu, gelecekte DeNo ve BUN ile olduğu gibi Node.js ile aynı olacaktır. Gerçekte, bu bir tesadüf değildir, çünkü Node.js kaputun altındaki bir deern ile aynı mekanizmayı kullanır.
Bu arada, bu tür bir sıyırma tam anlamıyla alınmalıdır: dönüştürülmeyen kod değildir, ancak sadece türler kaldırılır. JavaScript'teki TypeScript tarafından teorik olarak dönüştürülmesi gereken her şey şu anda çalışmıyor. Bunlar arasında fabrikalar veya isimlerin isimleri gibi özellikler bulunur. Bu, şu anda TypeScript için tam bir destek olmadığı anlamına gelir. Ancak şu anda çok erken bir gelişimden bahsettiğimiz ve zamanla çok şey değişebileceğimiz unutulmamalıdır. Ama hemen geliyorum.
Teknik olarak, her şey npm @swc/wasm-typescript modülüne dayanır. SWC, pas ve sonuç olarak hızlı bir şekilde yazılmış hızlı web derleyicisidir. Yukarıda belirtilen NPM modülü, SWC daktilo ayrıştırıcısını içerir, ancak bir pas kodu olarak değil (beklendiği gibi), ancak silahsız bir kod olarak. Bu şekilde, Node.js, ilgili sisteme pas takmadan her şeyi kolayca gerçekleştirebilir. Şahsen çok ustalıkla çözülmüş buluyorum. Ve tam olarak aynı mekanizma da Deno'da.
Geleceğe Yol
İlk sürüm için, dilin bazı özelliklerine destek eksikliği gibi bazı kısıtlamalarla yaşamak zorundasınız. Dosyalar ayrıca dosyanın uzantısı olmalıdır .ts ulaşım, izin verilmez .js atanın. Ayrıca, komut dosyası türü yalnızca projenizin kodunda desteklenir, ancak node_modules-Directory. Geliştiricilerin, uyumluluğu aşağı doğru yok edecek saf komut dosyalarının bir uygulaması olarak yalnızca NPM modüllerini yayınlamasını önlemek istedik. Bu nedenle, modülleri yayınlarken tamamlanmaya devam etmelidir. Bu arada, türün soyulmasından sonra bile, hataların kaynak kodunda doğru satır ve sütun numaralarıyla belirtilebileceği heyecan verici buluyorum. Bu, kaynaksallıkların da desteklendiğini gösterebilir, aslında çözüm çok daha basittir: Soyma tipi söz konusu olduğunda, tip ek açıklamaların boşluklarla birlikte yazılır, böylece tüm konumlar kaynak kodda korunur.
Bu nedenle türün soyulması, Lapescript için belirli bir sürüme sahip düğümün belirli bir sürümüne bağlı olmamak için yakın gelecek için Node.js tarafından aldatılmalıdır. Node.js ile sağlanan ancak bağımsız olarak güncellenebilen NPM gibi bir modele ulaşmak istiyorsunuz. Bir zorluk, sistem boyunca küresel olarak değil, proje için TypeScript yüklemek istediğinizdir. Bunun çözülmesi gerektiği hala açık. Zaten bir ambalaj olan Bigness adlı bir NPM modülü var @Swc/wasm-typescript harekete geçti. Bununla birlikte, bu formun belgesinde, şu anda küresel olarak yüklemeniz gerektiği söyleniyor. Yani her şey hala başlangıçta ve tekrar zamanını alacak.
Belli bir noktada bir çözüm varsa, üç ve dört pasaj yol haritasını takip eder: ilk olarak, performanslar gelişti ve düğüm ve daktilo tarafından yazılmış derleyici arasındaki iletişim daha verimlidir. Dördüncü adımda, bunlar nihayet yeni özellikler. Mümkün olan en kısa sürede, dilin diğer özelliklerinin saf sıyırmanın ötesine geçen TypeScript tarafından desteklenmesi beklenebilir. Bu nedenle ait olması gereken bir özellik, tsconfig.json. Uzun süre gidecek her şeyin şaşırtıcı olduğunu düşünüyorum. Ama iyi: olduğu gibi.
Temkinli sevinç
Genel olarak, itiraf etmeliyim ki, bu özelliğin artık temelde Node.js. Deno ve Bun'ın son yıllarda daha küçük ve daha küçük hale gelen açık bir avantajı oldu. Node.js'in en son sürümlerinde her zaman eleştirilecek çok şeyim vardı, ancak bu doğru yönde büyük bir adım. Tüm detaylardan memnun olmasam da, bu temelde mükemmel bir adımdır. Umarım konunun, 19.7 düğümü ile tanıtılan yürütülebilir bireysel uygulamalar gibi diğerleri kadar yüzmez. Veya DeNo sanal alanına dayalı güvenlik modeline dayanarak boşaltılmış modüller için güvenliği artırmak için Sandbox V8'in kullanımı. Ancak düğüm 20'den hiçbir şey olmadı.
Bu yüzden hoş bir sürpriz var, ama coşkum hala sınırlı çünkü açıklanan yol haritasının ne kadarının gerçekte uygulanacağı ve her şeyden önce ne zaman uygulanacağı konusunda şüpheliyim. Çünkü Deno ve Bun, daha taze bir rüzgarın NODE.JS. Bununla birlikte, sadece özellikler tamamen uygulandığı ve şantiyeler başladığında kalmadığı sürece güzeldir. Hala küçük bir davranış. Ancak: Gelecek, düğüm ekibinin Ekim ayının 23 sürümünde ne yayınlayacağını gösterecek. O zamana kadar sabırlı olmalıyız ve şaşırmalıyız.
(RME)