Şimdilik TypeScript kullanmayın!

Tam metin 1.740 kelimedir ve beklenen öğrenme süresi 8 dakikadır.

Kaynak: clearboxseo

İlk olarak belirtilmesi gerekir: Yazılan JavaScript harika.

Flow'u kullandım ve şimdi ve gelecekte TypeScript kullanmaya devam edeceğim. Bunun hızlı gelişme için güçlü bir araç olduğu inkar edilemez.

Ancak, her şeye kadir mi? Açıkçası hayır. Bu güçlü gücün arkasındaki bedel nedir? Düşünmeye değer. Artıları ve eksileri ile yüzleşmemiz gerekiyor.

Bir süre mermi uçsun, JavaScript yazımının kusurlarına bir göz atalım ~

Kod kolayca ayrıntılı hale gelebilir

Aslında, TypeScript ve Flow'un manuel olarak yazılması iyi bir şey değildir! Kodu daha ayrıntılı, hataya açık ve yönetilmesi daha zor hale getirir.

Kaynak: unsplash

İdeal olarak TypeScript, veri tabanlarından ve tanımlanmış dillerden türler çıkarır. Bu şekilde, tür güvenliğinden faydalanabiliriz ve yalnızca özel nesne türlerini yönetmemiz gerekir.

Ancak fazlalıktan kaçınmak gerçekten zordur. TypeScript ile yazılmış basit bir sınıf tabanlı React bileşenine bir göz atın:

interface NameProviderProps { çocuklar: (durum: NameProviderState) = > React.ReactNode; } interfaceNameProviderState { salt okunur ad: dize; } exportclassNameProviderextendsReact.Component < NameProviderProps, NameProviderState > { salt okunur durum: NameProviderState = {name: 'Piotr'}; render () { this.props.children (this.state) döndür; } }

rawtypescriptComponent.js | GitHub'ı görüntüle

Bu, sınıf tabanlı basit bir React bileşenidir:

exportclassNameProviderextendsReact.Component { durum = {isim: 'Piotr'}; render () { this.props.children (this.state) döndür; } }

rawplainComponent.js | GitHub'ı görüntüle

TypeScript sürüm kodu% 248 artmıştır. Araçlar ve çalışma durumu gerçekten çok daha iyi, peki ya okunabilirlik?

Redux işlemlerini idare etmek için tür örneğine bir bakın. Çok yetenekli ve pratiktir. Tür dönüştürme sorununa girme konusunda endişelenmenize gerek yok ...

typeInferValueTypes < T > = T genişler {: U çıkarımı}? U: asla; tür Eylemler = ReturnType < InferValueTypes < typeof eylemler > >

Manuel olarak yazılan türler hatalara meyillidir

Büyük bir ekibin bir proje üzerinde çalıştığını varsayarak, John aşağıdaki tür tanımını yazdı:

typePropsA = { isim: dize, tarih: Tarih, url: string }

Pablo, yazı yazarken türün zaten var olduğunun farkında değildi, bu yüzden benzer bir tür yarattı:

typePropsB = { isim: dize, tarih: dize, url: string }

Şimdi gereksiz tipler var, daha kötüsü, PropsB'nin tanımı biraz farklı olduğu için net bir tip tanımı yapmak zor.

Bu tür şeyler nadir değildir ve genellikle milyonlarca dolar yatırım yapan büyük ölçekli projelerde gerçekleşir.

Kaynak: unsplash

Çoğu veritabanında tür yoktur

Tipik ekosistem hızla gelişmesine rağmen,% 100 uygulamalara ulaşmaktan uzaktır. Bu, çoğu durumda kendi başınıza yapmanız gerektiği anlamına gelir.

Bununla birlikte, her büyük proje sonunda bazı kitaplıklara veya kullanım durumlarına uygulamak için bazı standart dışı özel türler başlatacaktır (veya bunları GitHub sorunlarından kopyalayacaktır).

Redux gibi en popüler kitaplıklar bile, standartlaştırılmış türler olmadığında, uygulama durumunu, form dönüştürme prosedürlerini vb. Yönetmek zordur.

Yanlış güvenlik duygusu verin

Bu en iyi yöntem olmasa da, bir redux işlemini aşağıdaki gibi tanımladığınızı varsayalım:

exportconst MY_BASIC_ACTION: "MY_BASIC_ACTION" = "MY_BASIC_ACTION"

Bu işlemlerden bazıları çok basittir, ancak 30 tür işlemle karşı karşıya kaldığınızda, eski işlemi yeni işlemi kopyalamak için şablon olarak kullandığınızda aşağıdaki durumların gerçekleşmesi kolaydır:

exportconst MY_NEW_ACTION: "MY_BASIC_ACTION" = "MY_BASIC_ACTION"

Sorunu gördün mü? İlk operasyonun türü ile yeni bir operasyon tanımladık.

Bunu sorgulamak zordur, çünkü MY_NEW_ACTION göndermiş olmalısınız, ancak gerçekte MY_BASIC_ACTION göndermiş olmalısınız.

Flow / TypeScript kullanırken kendinizi çok rahat ve savunmasız hissedeceksiniz. Sorunun çok zorlaştığını anladığınızda, başınızı saatlerce duvara vurmak isteyebilirsiniz!

Kaynak: unsplash

Tip yönetimi başlı başına bir beceridir

JavaScript'in anlaşılması zaten kolaydır, ancak bu dinamik, tehlikesiz dile türler eklerken, yalnızca üstün becerilere sahip olanlar türleri doğru ve verimli bir şekilde yazabilir.

Yazılı JS'den kaçınmak, zorluklardan kaçınmak için bir neden değildir, ancak kısa teslim süreleri olan gerçek projeler veya çoğu yeni geliştirici için bunu yapmanız gerekebilir.

Çoğu durumda, bileşenlerin yalnızca özelliklerini ve durumunu sınıflandırmanız gerekebilir. Ama bu problem, bir gün onunla yüzleşmek zorundasın.

İhtiyacınız olan tek şey güçlü bir IDE olabilir

VSCode'daki IntelliSense'i sıralama araçlarıyla birleştiren geliştiriciler, TypeScript ve Flow'dan daha fazla kolaylık elde edebilir.

IDE desteği size çok para kazandıracak. Bahse girerim TypeScript'te bu kadar az eksiklik olmasına şaşıracaksınız.

Kaynak: creative-tim

Tür güvenliği olmadan kodlama, JavaScript'in tam gücünü sağlar - sonuçta, tasarıma dayalı olarak gevşek bir şekilde yazılmış kodlamadır - ve bu konuda ekstra dikkatli olmanızı sağlar.

Yönetilecek daha fazla yapılandırma

Yazılı bir işletim sistemi oluşturmak basit değildir. Oluşturma araçlarını kullanmanız, yapılandırma dosyalarını yönetmeniz ve daha fazla bağımlılık oluşturmanız gerekir. Kitaplıkta bir zamanlar TypeScript ile kullanımı kolay olan ayrı bir parça bulmanız gerekir.

En acı verici şey, LibraryZ'yi Flow veya TypeScript ile kullanmak için GitHub'da çözüm aramak için çok zaman harcayabilmenizdir.

Kaynak: unsplash

Gerçek başarı, türü olmayan ancak yine de göz atılabilen ve kendi kendine belgelenebilen bir projedir. Belki TypeScript'ten nefret ettiğimi düşünüyorsunuz, ama tam tersine, TypeScript'i çok seviyorum ve faydaları konusunda derin bir anlayışa sahibim.

Bununla birlikte, bir işçi iyi iş yapmak istiyorsa, önce aletlerini keskinleştirmelidir ve kusurlarını rasyonel olarak araştırmak gerekir, değil mi?

Yorum Beğen Takip Et

Yapay zeka öğrenme ve geliştirmenin kuru mallarını paylaşalım

Yeniden yazdırıyorsanız, lütfen arka planda bir mesaj bırakın ve yeniden yazdırma şartnamelerine uyun

Shandong Weifang kiraz çiçeklerini çiçek açarak karşılıyor
önceki
Core Voice Today | 5G mesajlaşma teknik raporu yakında yayınlanacak, geleneksel SMS büyük bir değişikliğe yol açacak
Sonraki
Python Excel ile karşılaştığında ...
Geliştiriciler için bir zorunluluktur! 6 vazgeçilmez araç
Bu 6 React ipucu size keyifli bir iş deneyimi sağlayacak
Daha az döngü mü? Bu 3 Python işlevine bir göz atın
Tarayıcıda makine öğrenimini keşfedin
Ücretsiz API ile oluşturulabilen 7 uygulama, kaçırmayın!
Veri bilimcilerin DJ'leri değiştirmesine izin verilsin mi? Python başarmanıza yardımcı olur
Wang Yasha, Pekin Üniversitesi: Yeni Koroner Pnömoninin Yayılmasına Yönelik Tahmin Modeli
Esnek kodlamanın özü: Python'daki her şey bir nesnedir
AI + Danışmanlık: Veri bilimcileri danışman olacak mı?
Büyük verinin gücü: perakende, tıbbi ve hukukun dönüşümü
Tsinghua Üniversitesi'nden Wu Ji: Bilgi teknolojisi yeni tacı önlemeye ve kontrol etmeye yardımcı oluyor
To Top