2020'de ne inşa ediyoruz

Mar 10 2020
2020 planımız üç alanı kapsıyor: Flow, düzenleyici içi teşhis (tür hataları), otomatik tamamlama ve "tanıma git" gibi zengin düzenleme ve kod tarama özellikleri sağlamak için bir dil sunucusu sağlar. Odak noktamız VS Code'da sınıfının en iyisi bir deneyim sağlamak olsa da, LSP kullanan herhangi bir düzenleyici Flow'un dil sunucusundan yararlanabilir.
Aksonsat Uanthoeng adlı kişinin Pexels'daki fotoğrafı

2020 planımız üç alanı kapsıyor:

  • VS Code düzenleme ve tarama deneyimimizin yeteneklerini ve yanıt verebilirliğini iyileştirin
  • Yazı sistemimizi daha basit, anlamlı ve doğru hale getirin
  • Performansı yeniden kontrol ederken çizgiyi korurken en yüksek bellek kullanımımızı azaltın

Flow, düzenleyici içi tanılama (tür hataları), otomatik tamamlama ve "tanıma git" gibi zengin düzenleme ve koda göz atma özellikleri sağlamak için bir dil sunucusu sağlar. Odak noktamız VS Code'da sınıfının en iyisi bir deneyim sağlamak olsa da, LSP kullanan herhangi bir düzenleyici Flow'un dil sunucusundan yararlanabilir.

2020'de düzenleme ve göz atma deneyimimize iki tür yatırıma odaklanacağız. İlk olarak, IDE özelliklerimizin güvenilirliğini ve yanıt verme özelliğini geliştirmeye devam edeceğiz. İkinci olarak, en çok talep edilen bazı IntelliSense özellikleri için destek ekleyeceğiz.

Flow dil sunucusu her zaman hemen yanıt vermez çünkü ilk başlatıldığında başlatılması gerekir ve bazen büyük yeniden ödemeler gibi olaylardan sonra yeniden başlatılması gerekir. Çoğu dil özelliği, siz kodu düzenlerken Flow sunucusunun sürekli çalışmasını gerektirir. Mümkün olduğunda, düzenleme ve göz atma isteklerimizi, sunucuya ihtiyaç duymadan tamamlanmalarını mümkün kılacak şekilde dönüştüreceğiz. Flow sunucusunun kendisini yeniden başlatması gereken durumları da azaltmaya devam edeceğiz.

İkinci bir yatırım grubu, en çok talep edilen IntelliSense özellikleri için destek eklemekten gelir : parametre bilgisi, hızlı bilgi ve hızlı düzeltmeler.

  • Parametre bilgisi, işlev çağrısını yazarken görüntülenen imza yardımı - beklenen parametre sayısı ve türü - içerir. Ayrıca, koddaki JSDoc açıklamalarından çıkarılan parametre hakkındaki belgeleri de göstereceğiz .
  • Hızlı bilgi, kodunuzdaki bir tanımlayıcının üzerine geldiğinizde bildirimi gösterir. Flow zaten işlev imzalarını gösteriyor. Hızlı bilgi için biçimlendirmeyi iyileştireceğiz ve parametre bilgilerine benzer dokümantasyon yorumları ekleyeceğiz.
  • İlk hızlı düzeltme özelliğimizi ekledik - "Bunu mu demek istediniz?" bu, siz yazarken kodunuzda düzeltmeler önerir . Örneğin, adlandırılmış bir alanı olmayan, ancak adlandırılmış bir alanı olan foo.barbir nesne üzerine yazarsanız , hızlı düzeltme bu öneriyi uygular. Ayrıca Akış hatası bastırmaları ve otomatik statik ifadeler oluşturmayı da araştırıyoruz .foobarbazimport

Basit, anlamlı ve doğru olan, dikkatlice tasarlanmış bir tip sisteminin geliştiriciler için daha iyi bir deneyim sağlayabileceğine inanıyoruz.

  • Basit: Geliştiriciler, Flow'un kodlarında nasıl davranacağını tahmin edebilir mi?
  • Etkileyici: Geliştiriciler, Flow tarafından engellenmeden yapmaları gerekeni yapabilir mi?
  • Doğru: Geliştiriciler, yaygın maliyetli hatalardan kaçınmalarına yardımcı olmak için Flow'a güvenebilirler mi?
  • Kullanımı thisdolaylı olarak yazılabilir, çünkü kontrolsüz kod işlevleri ve yöntemlerin sık sık potansiyel müşteriyle any. Kullanımı anygüvenli değildir ve Flow'un hataları bildirmesini engeller. İçin yazmanın uygulanması this, Flow'un kullanan kodu kontrol etmesine izin verir this.
  • Mühürsüz nesne türleri , boş nesne değişmezlerini ve işlevlerdeki özellikleri modellemek için kullanılır. Mühürsüz nesneler, herhangi bir zamanda yeni özelliklerin yazılmasına izin verir. Birden çok ifadede nesne başlatmayı etkinleştirmek gibi senaryolar için kullanışlıdırlar. Ancak Flow, eşleşen yazmalar olmadan mühürlenmemiş nesnelerden gelen okumaları kontrol etmez . Yaygın başlatma modellerini dikkatlice izleyerek bu yetersizliği gidermek için çalışacağız.
  • Flow'un ve gibi birçok yardımcı program türü , karşılık gelen çalışma zamanı işlemlerinin anlamını yansıtmaz. Bu türler için birinci sınıf tasarımlar oluşturacağız.$ObjMap$PropertyType
  • Akış hatası bastırmaları çok kabadır. Bir ekleme $FlowFixMehatasının bastırmak bir türüne kod çizginin üzerinde aslında potansiyel olarak gelecek hatalarını maskeleme, bu kod tarafından tanıtılan tüm hataları bastırır. Aynı kod satırında başka bir hatayı gizlemeden belirli hataları bastırmanıza izin verecek hata kodları tasarlıyoruz. Ve bastırmaları bir hatanın birincil konumuna taşıyacağız, bir tanıma eklenmiş bir bastırmanın, o tanımın kullanıldığı yerde hataları gizlemesini önleyeceğiz.
  • Soysal türler ve işlevler şu anda öngörülemeyen davranışlara sahiptir, kapsamlarından kaçabilen genel tür parametreleri ve çağrı sitesinden çok uzakta yeni sınırlar biriktirebilen genel işlevlere çağrı yapar. Jenerik işlevlerdeki hataların daha güvenilir tespiti, kaçan tip parametrelerini önlemek için bir test ve işlev çağrılarının düzgün bir şekilde sınırlandırıldığından emin olmak için bir kontrol dahil olmak üzere, jenerikler için yeni davranışlar tasarlıyoruz.

Flow ekibi , geçen yıl yeniden kontrol sürelerimizi% 70 oranında azaltmak gibi büyük performans iyileştirmeleri yaptı . Facebook geliştiricilerinden performans iyileştirmelerimiz hakkında çok büyük olumlu geri bildirimler aldık. JavaScript kod tabanlarımız büyüdükçe bile performans sınırını korumayı hedefliyoruz. Ayrıca, tüm durumlarda Flow'un bellek kullanımını azaltmak için çalışıyoruz.

Kapanışta

2020'de Flow ekibi, endüstri çapında güvenilirlik, özellik bütünlüğü ve zevk standartlarına eşit bir geliştirici deneyimi sunacak. Bu geliştirici deneyiminin bir parçası olarak, temelleri geliştirmeye devam edeceğiz: bellek kullanımı ve güvenilirlik. En çok talep edilen IDE düzenleme ve göz atma özelliklerini sunacağız. Ayrıca, geliştiricilerin güvenli ve doğru kod yazmasını kolaylaştırmak için Flow'un tür sistemini geliştireceğiz.

Bu blogda, GitHub'da ve Flowtype Discord kanalımızda sizinle iletişim halinde olacağız .