Bloga Geri Dön
Guide2 dk. okuma

FiveM TypeScript Geliştirme: Tiplerle Modern Scriptler

TypeScript ile FiveM script'leri yazın. Build kurulumu, natives typing'leri, paketleme ve önde gelen geliştiricilerin 2026 yılında saf Lua yerine neden TS'e geçtiği.

Agency Scripts

Agency Scripts Kurucusu ve Baş Geliştiricisi

FiveM İçin Neden TypeScript?

TypeScript, FiveM geliştirmesine statik tip denetimi, modern JavaScript özellikleri ve üstün IDE desteği kazandırır. Lua standart script dili olmaya devam ederken, JavaScript'e derlenen TypeScript, JavaScript runtime üzerinden FiveM içinde yerel olarak çalışır. Tip güvenliği, aksi halde runtime sırasında sunucunuzu çökertecek hataları derleme anında yakalar, otomatik tamamlama geliştirmeyi ciddi ölçüde hızlandırır ve interface'ler kodunuzun kendi kendini belgelemesini sağlar. Birden fazla geliştiriciye sahip karmaşık projelerde TypeScript, koordinasyon yükünü azaltır ve refactoring işlemlerini daha güvenli kılar.

fivem-ts-boilerplate ile Proje Kurulumu

Bir TypeScript FiveM projesine başlamanın en hızlı yolu topluluk tarafından sağlanan fivem-ts-boilerplate kullanmaktır. Şablon repository'sini klonlayın, şunu çalıştırın: npm install bağımlılıkları kurmak için; böylece ayrı client, server ve shared kaynak dizinlerine sahip kullanıma hazır bir proje yapısı elde edersiniz. Boilerplate, FiveM ile uyumlu TypeScript kodunu JavaScript paketlerine derleyen bir webpack yapılandırmasının yanı sıra FiveM native'leri, citizen işlevleri ve yaygın framework API'leri için tür tanımlarını içerir. Projenizi şununla derleyin: npm run build ve çıktı doğrudan bir resource klasörüne gider.

Tip Tanımları ve Native'ler

The @citizenfx/client ve @citizenfx/server tür paketleri tüm FiveM native fonksiyonları ve API çağrıları için TypeScript tanımları sağlar. Bu tanımlar, şunun gibi fonksiyonlar için otomatik tamamlamayı etkinleştirir: GetEntityCoords, SetEntityHealth, ve RegisterCommand, kod yazarken parametre türlerini ve dönüş değerlerini gösterir. QBCore veya ESX gibi framework'e özel API'ler için, framework export'larını ve event'lerini kapsayan ek tür tanımlama dosyaları oluşturabilir veya yükleyebilirsiniz. Bu, IDE'nizi tüm FiveM API'si için etkileşimli bir dokümantasyon tarayıcısına dönüştürür.

Client ve Server Mimarisi

TypeScript projenizi istemci ve sunucu kodları arasında net bir ayrımla yapılandırın. Her iki tarafın da ihtiyaç duyduğu arayüzler, enum'lar ve yardımcı fonksiyonlar için paylaşılan dizini kullanın. Derleyicinin istemci ve sunucunun veri biçimleri konusunda uyumlu olduğunu doğrulayabilmesi için paylaşılan tiplerde etkinlik veri yükü arayüzlerini tanımlayın. Alttaki framework'ü soyutlayan bir servis katmanından framework sarmalayıcılarını içe aktarın, böylece iş mantığınızı QBCore, ESX ve standalone kurulumlar arasında taşınabilir hale getirin. Bu mimari, kod tabanınızı modüler ve test edilebilir kılar.

FiveM İçinde TypeScript Hata Ayıklama

Çalıştırılan JavaScript, TypeScript kaynak kodunuzdan farklı olduğu için derlenmiş kodda hata ayıklamak zor olabilir. Hata stack trace'lerinin orijinal TypeScript dosyalarınıza referans vermesi için webpack yapılandırmanızda source map'leri etkinleştirin. Şunu kullanın: console.log sunucu tarafı hata ayıklama için FiveM sunucu konsoluna iletilen ifadeler. İstemci tarafı hata ayıklama için F8 üzerinden erişilebilen NUI geliştirici araçları JavaScript yürütmesini inceleyebilir. Derlenmiş çıktılar üzerinden sorunları izlemeyi kolaylaştırmak için zaman damgaları, günlük düzeyleri ve kaynak dosya referansları içeren yapılandırılmış bir günlük kaydı aracı eklemeyi düşünün.

Lua ile Taşıma ve Birlikte Çalışma

Tüm sunucunuzu tek seferde TypeScript diline dönüştürmenize gerek yoktur. TypeScript kaynakları, aynı event ve export sistemi üzerinden iletişim kurdukları için Lua kaynaklarıyla mükemmel şekilde bir arada çalışır. Mevcut Lua scriptlerini korurken yeni özellikleri TypeScript ile geliştirmeye başlayın. TypeScript üzerinden Lua exportlarını çağırırken beklenen fonksiyon imzalarını tanımlayan tür bildirimleri oluşturun. TypeScript iş akışına alıştıkça kritik sistemleri kademeli olarak taşıyın. Bu artımlı yaklaşım, ekibinizin TypeScript öğrenmesini sağlarken sunucuyu kararlı tutar ve riskli bir tam yeniden yazımın önüne geçer.

Başlamaya Hazır mısınız?

Scriptleri mağazamızdan edinin veya destek, güncellemeler ve gelecek yeniliklere göz atmak için Discord'a katılın.