Node.js + TypeScript = Artık JavaScript yok

pembikbulut

Global Mod
Global Mod


  1. Node.js + TypeScript = Artık JavaScript yok

“Artık JavaScript yok!”


Duyuru








Golo Roden, native web GmbH'nin kurucusu ve CTO'sudur. Etkinlik ve hizmet odaklı dağıtılmış mimarilere odaklanarak web ve bulut uygulamaları ile API'lerin tasarımı ve geliştirilmesiyle ilgilenmektedir. Yol gösterici ilkesi, yazılım geliştirmenin kendi başına bir amaç olmadığı, her zaman temeldeki profesyonelliği takip etmesi gerektiğidir.







Node.js ile çalıştığım son on beş yılda bu cümleyi defalarca duydum. Suçlamaların listesi uzundu: JavaScript gerçek bir programlama dili değil. JavaScript kurumsal sektördeki karmaşık projeler için uygun değildir. JavaScript bu değil, JavaScript bu değil. Elbette on beş yıl içinde JavaScript'i seven bazı insanlarla da tanışacaksınız, ancak geliştiricilerin çoğu JavaScript'i tamamen reddediyor. Pek çok insan bunu inançtan değil zorunluluktan yazıyor. JavaScript tuhaftır ve bu hala yaygın olarak kabul edilen bir görüştür. Eğer aynı fikirdeyseniz bugün size gerçekten iyi haberlerim var: her şey bitti, bir daha asla JavaScript yazmak zorunda kalmayacaksınız!

Belki şunu söylüyorsun:

“Aslında bu tamamen doğru değil, çünkü bugün bile mutlaka JavaScript yazmam gerekmiyor. Sonuçta TypeScript var.”

Ve bu doğru. Microsoft, TypeScript'i on iki yıl önce piyasaya sürdüğünden beri, modern web geliştirmede neredeyse fiili dil haline geldi. Ve bu bir tesadüf değil, çünkü TypeScript birçok şeyi iyi yapıyor: mükemmel ve iyi düşünülmüş isteğe bağlı statik tip sisteminden başlayarak yine çok güvenilir derleyiciye kadar. Pek çok geliştirici artık günlük işlerini TypeScript olmadan hayal edemiyor. Ekipman olmasaydı çünkü ışığın olduğu yerde gölge de vardır.


Önerilen editoryal içerik



İzniniz doğrultusunda harici bir YouTube videosu (Google Ireland Limited) buraya yüklenecektir.



Her zaman YouTube videolarını yükle

YouTube videosunu şimdi indirin




Node.js + TypeScript: Artık JavaScript yok!




TypeScript ile bir Node.js projesi oluşturmaktan daha eğlenceli şeylerin olduğunu kişisel deneyimlerimden biliyorum. Bu sadece TypeScript'i kurmak ve yapılandırmak meselesi değildir; etrafındaki her şey aynı zamanda TypeScript ile de çalışmalıdır: kod biçimlendirmesinden, astarlamaya ve test etmeye kadar. Tüm yapı taşlarının, her şeyin birbiriyle uyumlu ve uyumlu olacak şekilde yapılandırılması uzun zaman alır.

Node.js neden TypeScript'i yerel olarak desteklemiyor?


Eminim ki son on iki yılda Node.js'nin neden TypeScript olmadığını tekrar tekrar soracak tek kişi ben olmayacağım. yerli destekler. Node evrenindeki bir geliştirici olarak neden TypeScript nihayet olması gerektiği gibi çalışana kadar bu son derece sinir bozucu yumurta dansını yapmak zorunda kalıyorsunuz? Node.js'nin TypeScript'i yerel olarak desteklemesi çok daha kolay olmaz mıydı? Daha sonra derleyicinin tamamını kaydedebilirsiniz, testler TypeScript ile otomatik olarak çalışır ve diğer tüm araçlar muhtemelen hızlı bir şekilde değiştirilir. Çünkü TypeScript bir kez temelleri doğru anladığında gerisi muhtemelen hızla gelecektir. Peki Node.js'nin TypeScript'i yerel olarak desteklemesi harika olmaz mıydı? Bu ileriye doğru büyük bir adım olmaz mıydı?

Bu da bizi vaat edilen büyük habere getiriyor: Temmuz 2024'ün başından itibaren Node.js, TypeScript için yerel desteği içeriyor!

Çünkü muhtemelen pek çok insan bunun nasıl çalıştığını ve her şeyden önce nasıl çalıştığını merak ediyor. Kuyu işe yarıyor, bazı cevaplarım var. Her şeyden önce: TypeScript desteği şu anda hala deneyseldir, yalnızca gecelik derlemelerde mevcuttur ve Node.js'yi başlatırken uygun bir bayrak belirtmeniz gerekir; --experimental-strip-types. Bunların hepsi yakında düzenli bir sürüme ve belki de Ekim ayında çıkması beklenen Node.js 23'e kesinlikle dahil edilecek.

Karakter silme nasıl çalışır?


Uygulama başlangıçta oldukça basittir: koddaki tür açıklamaları çalışma zamanında basitçe atılır. Bu, hiçbir tür denetiminin yapılmadığı anlamına gelir. Bu, Node ekibinin bilinçli bir kararıydı. Yazım denetimi istiyorsanız yine de TypeScript derleyicisine ihtiyacınız var. Yani gelecekte Node.js için de durum Deno ve Bun ile aynı olacak. Aslında bu bir tesadüf değil çünkü Node.js, perde arkasında tip kaldırma işlemi için Deno ile aynı mekanizmayı kullanıyor.

Bu arada, bu tür sıyırma tam anlamıyla ele alınmalıdır: kod dönüştürülmez, yalnızca tür açıklamaları kaldırılır. Teorik olarak çalışmak için TypeScript'ten JavaScript'e dönüştürülmesi gereken her şey bu nedenle şu anda çalışmayacak. Bunlar, numaralandırmalar veya ad alanları gibi özellikleri içerir. Bu, şu anda TypeScript için tam destek olmadığı anlamına gelir. Ancak şu anda gelişimin çok erken bir aşamasından bahsettiğimizi ve zamanla pek çok şeyin değişebileceğini unutmamalıyız. Ama buna birazdan değineceğim.

Teknik olarak her şey @swc/wasm-typescript npm modülüne dayanmaktadır. SWC, Rust'ta yazılmış ve bu nedenle hızlı olan Speedy Web Derleyicisidir. Söz konusu npm modülü, (beklediğiniz gibi) Rust kodu olarak değil, WebAssembly kodu olarak SWC'nin TypeScript ayrıştırıcısını içerir. Bu şekilde Node.js, Rust'un ilgili sisteme kurulmasına gerek kalmadan her şeyi kolayca yapabilir. Kişisel olarak bunun çok akıllı bir çözüm olduğunu düşünüyorum. Ve tamamen aynı mekanizma Deno'da da mevcut.

Geleceğe giden yol


İlk sürümde bazı dil özelliklerinin desteklenmemesi gibi bazı sınırlamalarla yaşamak zorundasınız. Dosyaların ayrıca dosya uzantısına sahip olması gerekir .ts giyilmesine izin verilmiyor .js aday gösterilmek. Ayrıca TypeScript yalnızca projenizin kodunda desteklenir; node_modules-Liste. Geliştiricilerin yalnızca npm modülleri ve saf TypeScript uygulamaları yayınlamasını engellemek istiyorlardı, bu da geriye dönük uyumluluğu ortadan kaldıracaktı. Yani formları gönderdiğinizde yine de doldurmanız gerekir. Bu arada, türün kaldırılmasından sonra bile hataların çalışma zamanında kaynak kodundaki doğru satır ve sütun numaralarıyla belirtilebilmesini ilginç buluyorum. Bu, kaynak haritalarının bile desteklendiğini gösterebilir, ancak gerçekte çözüm çok daha basittir: tür ayırma işlemiyle tür açıklamalarının üzerine boşluklar yazılır, böylece kaynak kodundaki tüm konumlar korunur.

Bu nedenle yakın gelecekte tür ayırma işlemi Node.js'den ayrılacak, böylece belirli bir TypeScript sürümüne sahip belirli bir Node sürümüne güvenmek zorunda kalmayacaksınız. Node.js'de bulunan ancak bağımsız olarak güncellenebilen npm gibi bir şablona ulaşmak istiyorsunuz. Zorluklardan biri, TypeScript'i genel olarak sistem genelinde değil, proje başına yüklemek istemenizdir. Bu sorunun nasıl çözüleceği henüz belli değil. Amaro adında sarmalayıcı görevi gören bir npm modülü zaten var @swc/wasm-typescript işlevler. Ancak bu modülün dokümantasyonu şu anda global olarak kurulması gerektiğini belirtmektedir. Yani bunların hepsi henüz başlangıç aşamasında ve hala zaman alacak.

Belirli bir noktada bir çözüm bulunduğunda, yol haritasının üçüncü ve dördüncü adımları takip eder: İlk olarak, performans artırılır ve düğüm ile TypeScript derleyicisi arasındaki iletişim daha verimli hale getirilir. Son olarak dördüncü adım yeni özelliklerle ilgilidir. Ancak o zaman TypeScript'in dilin basit karakter kaldırmanın ötesine geçen diğer özelliklerini desteklemesi beklenebilir. Ayrıca dahil edilmesi gereken bir özellik de destektir tsconfig.json. Her şeyden önce bu şeyin gerçekleşmesinin bu kadar uzun sürmesini şaşırtıcı buluyorum. Ama sorun değil: olan bu.

İçerilen neşe


Genel olarak, bu özelliğin artık Node.js'ye gelmesine hoş bir şekilde şaşırdığımı itiraf etmeliyim. Deno ve Bun son yıllarda önemli bir fark yakaladılar ve bu fark artık giderek azalıyor. Node.js'nin en son sürümleri hakkında her zaman eleştirecek çok şeyim oldu, ancak bu doğru yönde atılmış büyük bir adım. Tüm ayrıntılardan memnun olmasam da prensipte bu yine de ileriye doğru atılmış büyük bir adım. Umarım konu, 19.7 düğümüyle sunulan tek çalıştırılabilir uygulamalar gibi, diğerleri kadar kafa karıştırıcı olmaz. Veya indirilen modüllerde güvenliği artırmak için Deno'nun sanal alan tabanlı güvenlik modelini izleyerek V8'in sanal alanını kullanmak. Ancak 20. bölümden hiçbir şey olmadı.

Bu yüzden olumlu bir şekilde şaşırdım, ancak şu anda heyecanım sınırlı çünkü açıklanan yol haritasının ne kadarının gerçekte uygulamaya konulacağı ve hepsinden önemlisi ne zaman uygulanacağı konusunda şüpheliyim. Çünkü Deno ve Bun'un Node.js'ye yeniden taze bir soluk gelmesini sağlaması çok güzel. Ancak bu, özellikler gerçekten uygulandığı ve hiçbir yarım kalmış iş kalmadığı sürece iyidir. Hala biraz tedbirliyim. Ancak gelecek, Node ekibinin 23. sürümde, örneğin Ekim ayında ne yayınlayacağını gösterecek. O zamana kadar sabırlı olmalı ve şaşırmamıza izin vermeliyiz.


(Ben)
 
Üst