TypeScript derleyici argümanı 'skipLibCheck' kullanımını
TypeScript derleyici argümanı skipLibCheck hakkında, bunun true olarak ayarlanmasının güvenliğini belirlemek için daha fazla açıklama araştırıyordum. Bulduğum en ayrıntılı açıklama şudur:
Yeni --skipLibCheck TypeScript 2.0, bildirim dosyalarının (uzantısı .d.ts olan dosyalar) tür denetiminin atlanmasına neden olan yeni bir --skipLibCheck derleyici seçeneği ekler. Bir program büyük bildirim dosyalarını içerdiğinde, derleyici hataları içermediği zaten bilinen bildirimleri tür denetiminden geçirmek için çok zaman harcar ve bildirim dosyası tür denetimleri atlanarak derleme süreleri önemli ölçüde kısaltılabilir.
Bir dosyadaki bildirimler diğer dosyalardaki tür denetimini etkileyebileceğinden, --skipLibCheck belirtildiğinde bazı hatalar tespit edilmeyebilir. Örneğin, bir bildirim dosyasında bildirilen bir türü bir bildirim olmayan dosya genişletirse, hatalar yalnızca bildirim dosyası kontrol edildiğinde raporlanır. Ancak, pratikte bu tür durumlar nadirdir.
Anlıyorum ki derleyicinin hatalı olduğu kabul edilmeyen dosyaları tür açısından kontrol etmek zorunda kalmamasından dolayı açıkça performans avantajı sağlıyorsunuz, ancak bu bayrağın, beyan dosyalarının sorunlu olmasıyla ilgili olarak derleyiciden çıkan hatalardan kaçınmak için kullanıldığını gördüm.
Elbette, bu bayrağı bunu atlatmak için kullanmak, uygulamanızın tip doğruluğunu azaltmaz mı?
Cevap #1
Soruyu kısaca başka bir şekilde ifade etmek gerekirse:
Elbette [skipLibCheck'i etkinleştirmek] uygulamanızın türlendirme bütünlüğünü azaltır mı?
Evet, katılırım, öyle yapıyor. Ancak, alternatif derlenmeyen bir uygulama ise, o zaman kullanışlı bir işaret haline geliyor.
Typescript kendisi oldukça olgun olmasına rağmen, typescript topluluğu hâlâ nispeten gençtir. Tonlarca kütüphane için tür tanımları mevcuttur ve hatta bazı yerel typescript kütüphaneleri de vardır, ancak çeşitli nedenlerle birbirleriyle uyumsuz olabilirler.
Daha sıkı olmasını istediğiniz tsconfig ile karşılaştırıldığında daha az katı bir tsconfig ile yazılmış bir kütüphaneyi içe aktarabilirsiniz—bu, kullanmaya çalıştığınızda derleyicinizin şikayet etmesine neden olabilir.
İki kütüphanenin aynı türleri tanımladığını ama uyumsuz şekilde tanımladığını görebilirsiniz. Buffer için bir Polyfill sağlayan kendi tip tanımlarını sunan bazı kütüphaneleri içe aktardım ve tüm uygulamam, uyumsuzlukları nedeniyle derlenemiyor olacaktı.
--skipLibCheck özelliğini etkinleştirmek, bu sorunların etrafından dolaşmaya yardımcı olabilir. Bunu açmak, Typescript'in tüm içe aktarılan kütüphaneleri tür denetimi yapmasını engelleyecektir. Bunun yerine, Typescript yalnızca kullandığınız kodu bu türlere karşı denetleyecektir. Bu, içe aktarılan kütüphanelerin uyumsuz kısımlarını kullanmadığınız sürece, sorunsuz bir şekilde derlenecekleri anlamına gelir.
kısaca, Evet, --skipLibCheck tür denetimini düşürür ve ideal olarak bunu kullanmazdık. Ancak her kütüphane henüz mükemmel türler sunmuyor, bu yüzden bunu atlamak bazen iyi olabilir.