Goscript, Go dilindeki kodları TypeScript'e dönüştüren deneysel bir compiler'dır. Temel amacı, Go backend'leri ile TypeScript frontend'leri arasında algoritma ve iş mantığını sorunsuz bir şekilde paylaşmayı sağlamaktır. Bu araç, geliştiricilere tek bir kod tabanı üzerinden hem sunucu tarafında hem de istemci tarafında çalışabilen uygulamalar oluşturma imkanı sunarak "bir kez yaz, her yerde çalıştır" felsefesini destekler. İş mantığını Go servisleri ve web uygulamaları arasında paylaşmak, Go algoritmalarını tarayıcılarda çalıştırmak veya mevcut Go kodundan TypeScript kütüphaneleri oluşturmak gibi çeşitli kullanım senaryolarına hitap eder.
Goscript, Go'nun güçlü eşzamanlılık desteğini ve mükemmel standart kütüphanesini TypeScript'e taşırken, mümkün olan en basit ve okunabilir çeviriyi hedefler. Şu an itibarıyla struct'lar, interface'ler, metotlar, fonksiyonlar, channel'lar ve goroutine'ler (async/await ile), pointer'lar, slice'lar, map'ler ve temel veri tipleri sorunsuz bir şekilde çalışmaktadır. Ayrıca, if, for, switch gibi kontrol akış yapıları, type assertion'lar, interface implementasyonları, closure'lar ve anonim fonksiyonlar da desteklenmektedir.
Geliştirme süreci devam eden özellikler arasında reflection desteği, standart kütüphane kapsamı ve generics bulunmaktadır. Bilinen bazı sınırlamaları ise JavaScript'in 64-bit float number tipini kullanması (Go'nun int tipleri yerine), pointer aritmetiği (uintptr) veya unsafe paketinin desteklenmemesi ve karmaşık sayıların olmamasıdır. Goscript'i kullanmak için go install veya npm install -g goscript ile kurulum yapabilir, ardından goscript compile komutuyla Go paketinizi TypeScript'e derleyebilirsiniz. Projenizin tsconfig.json dosyasında ES2022 hedefi ve esnext.disposable kütüphanesi gibi belirli ayarların yapılması gerekmektedir.
Bu araç, Go ve TypeScript ekosistemleri arasında köprü kurarak, geliştiricilerin backend ve frontend arasında kod paylaşımını kolaylaştırıp geliştirme verimliliğini önemli ölçüde artırıyor.