javascript - TypeScript yerine ES6 + Flow kullanımı


Bir JavaScript uygulaması tasarlıyorum. Bu uygulamanın ana özelliği, bir REST API tüketerek bazı özel giriş türlerine sahip formları yapılandırmak ve göstermek. Türler ve sınıflardan yararlanmak için TypeScript kullanmayı düşünüyorum. Ama biraz Google araştırmasından sonra, JavaScript ES6 + Flow (ve belki Babel) ile çok benzer bir sonuca ulaşabileceğimi fark ettim.

Sorularım şunlardır:

  • Bu iki yaklaşım gerçekten benzer mi yoksa ben mi karıştırıyorum?
  • ES6 + Flow ile TypeScript arasında seçim yaparken iyi bir karar vermek için neyi göz önünde bulundurmalıyım?

Yardım için teşekkürler.

Cevap #1

Feragatname: Flow ekibinde çalışıyorum.

Genel olarak, Flow'un doğruluğa daha çok odaklandığını, Typescript'in ise kullanım kolaylığına daha çok odaklandığını düşünüyorum. Bu nedenle, Flow çalışma zamanında hataya yol açabilecek şeylere izin vermezken, Typescript bazı durumlarda uygulamada belirli bir davranışın hataya yol açmasının olası olmadığını ve olası olmayan bir hatayı önlemenin geliştirici için yarattığı zorluğa değmeyeceğine karar verir.

İşte somut bir örnek:

type Foo = {
    x: string;
}

type Bar = {
    x: 'foo';
}

const b: Bar = { x: 'foo' };

const f: Foo = b;

f.x = 'asdf';

Bu kod hatalı -- b.x artık 'asdf', oysa tipi 'foo' olması gerektiğini söylüyor!

Typescript buna izin veriyor. Flow kafa karıştırıcı bir hata ile şikayet ediyor.

(typescript oyun alanı) (akışı dene)

Araçlar açısından, Typescript açık ara önde (bunu söylemek bana ne kadar acı verirse versin, Flow'u Nuclide'a entegre etmekten birincil olarak sorumlu kişi olarak). Kurulum süreci basit ve her şey sorunsuz çalışıyor. Flow için, Babel'i yüklemeniz ve yapılandırmanız gerekiyor (çünkü Flow bir derleyici değil, bu nedenle tipleri ayıklayacak bir şeye ihtiyacınız var). Typescript için, editör desteği için yapmanız gereken tek şey VSCode'u indirmek, bu kadar -- Typescript'i ayrı olarak indirmenize bile gerek yok. Flow için önerilen yolu izlemek istiyorsanız, Atom+Nuclide'u yüklemeniz ve Flow'u ayrı olarak indirmeniz gerekiyor. Kurulum tamamlandıktan sonra, Flow editör desteği oldukça iyi çalışıyor, ancak başlangıçtaki kurulum zaman alıcı.

VSCode+Typescript'i onları doğru bir şekilde karşılaştırabilecek kadar kullanmadım ama birçok insanın bundan çok memnun olduğunu biliyorum ve benim sınırlı deneyimime dayanarak, oldukça kusursuz. Özellik seti de daha büyük -- örneğin, Typescript otomatik refaktörlemeyi destekliyor.

Typescript'in DefinitelyTyped'i (kütüphaneler için tip tanımları seti, böylece npm modüllerini tip güvenliğini koruyarak kullanabilirsiniz) Flow'un benzer flow-typed'ından daha büyük ve daha olgun -- ancak flow-typed büyüyor.

İlgili makaleler