Birkaç ay önce, Webpack'te bulunamayan ihracatlar hakkında garip uyarılar görmeye başladım.
Kafam karışmıştı. Açıkçası, ihracat gerçekten oradayken yanlış bir şeyler vardı:
Ve bu türü kullandığım yerde neyin yanlış olduğunu fark edemedim:
Sorunu görebiliyor musun?
Hiçbir fikrim olmadan bir süre kazı yaptıktan sonra şu konuya rastladım: https://github.com/webpack/webpack/issues/7378
Bir TypeScript türünü içe aktardığım / kullandığım için TypeScript ve transpilasyonla bir ilgisi olduğunu hissettim, ancak net değildi ...
Ve sonra tıkladı; Tobias Koppers , anlayamadığım şeyi hemen gördü . TypeScript : D hakkında yeni bir kitap yayınladığım için "utandım"
Mesele şu ki, TypeScript kodu aktarıldıktan sonra arayüzler / türler kaybolur. Artık yoklar; onlar bulunmayan yayılan dosyaları.
Daha önce pek düşünmediğim şey, türler silinirken ithalat / ihracatın illa ki olması gerekmiyor. Bunun nedeni, belirsizlikler olması ve derleyicinin dışa aktarılan bir şeyin bir tür veya değer olup olmadığını her zaman bilmemesidir.
Benim özel durumumda, Webpack'in ortaya çıkan JavaScript kodunu işlerken gördüğü şey, var olmayan bir şey için bir içe aktarmanın orada olduğuydu.
Webpack yumuşaktı, bu yüzden yalnızca bir uyarı veriyordu, ancak sorun gerçekten oradaydı ve bu durumda hangi TypeScript'in üreteceği üzerinde hiçbir kontrolüm yoktu.
O noktada konuya daha fazla bakmak için fazla zamanım olmadı, bu yüzden bir süre dinlenmesine izin verdim (engellemiyordu), ancak daha sonra, TypeScript 3.8 yayınlandıktan sonra, sürümde gerçekten ilginç bir şey fark ettim. notlar: Yalnızca Tip İthalat ve İhracat .
Bana doğrudan ithalat sorunumu hatırlattı…
TypeScript'in bu yeni özelliği, bir türün yalnızca tür olarak içe aktarıldığı ve asla değer olarak kullanılmadığı durumlarda, bir öğeyi yalnızca tür olarak içe aktarma olanağını ekledi. Ve bu tam olarak ihtiyacım olan şeydi; bu sayede nihayet derleyiciye ne yapmak istediğimi tam olarak anlatabildim.
Sorunu çözmek için bunu değiştirmek zorunda kaldım
import { MyCustomExpressRequest } from "../../../shared";
import type { DidowiExpressRequest } from "../../../shared";
Peki bu pratikte neyi değiştiriyor?
TS sürüm notlarında açıklandığı gibi, "içe aktarma türü" kullanarak bir öğeyi içe aktararak, derleyiciye öğenin yalnızca bir tür ek açıklaması / bildirimi olarak kullanılmak üzere içe aktarıldığını söyler. Bu sayede derleyici, gönderilen koddaki içe aktarımı silebileceğini bilir.
Yapılan bu tek değişiklikle Webpack daha mutlu oldu: artık tuhaf içe aktarmalar yok!
Bazı dışa aktarmaların yalnızca bir tür ek açıklaması / beyanı olarak kullanılacağını belirtmek için "dışa aktarma türü" nü de kullanabileceğinizi unutmayın.
Son olarak, davranış "importsNotUsedAsValues" bayrağıyla daha da yapılandırılabilir.
TypeScript Yalnızca Type içe aktarmalar / dışa aktarmalar, dile yararlı bir ektir ve TypeScript'in bizim için yaptıkları üzerinde daha ayrıntılı bir kontrole sahip olmamızı sağlar ve böylelikle bunun gibi bazı can sıkıcı "uç durumları" ele almamızı sağlar.
Yine de bir uyarı: bununla aşırıya kaçmayın ;-)
Not: TypeScript, Angular, React, Vue ve diğer harika konular hakkında tonlarca başka harika şey öğrenmek istiyorsanız, kitabımın bir kopyasını almaktan ve bültenime abone olmaktan çekinmeyin !
Bugünlük bu kadar!
Tarif Monorepo Hey! Ben Berkay Aydın, Jotform'da Mühendislik Direktörü ve Ön Uç Mimarıyım. Ön uç mimarimizi yeniden yapılandırırken öğrendiklerimi size anlatacağım.
Hey geliştiriciler, her şeyin doğru planlandığı ve uygulandığı ve sürümün sonunda sayfa Google'da 2. sayfada yer alan, büyüyen bir işletme için bundan daha kötüsü olamaz. Şimdi, bu tarihte herkes her şeyi Google'da araştırıyor ve ürününüzü Google arama sonuçlarının en üstüne çıkarmak, rekabette hayatta kalmak için çok önemli.
Gündem: Giriş: TL; Ama okuyabilirim: A / B testi, CloudFront ve Lamba @ edge hakkında zaten bilginiz varsa, AWS Lambda @ edge ile doğrudan A / B testine gidin. A / B testi nedir? A / B testi, kullanıcıların bir web sitesinin iki farklı versiyonunun katılımını karşılaştırmaya odaklanan bir UX araştırma metodolojisidir.
Bugün AppStore'daki birçok uygulama, tablo görünümünü kaydırırken içeriği tablo görünümü başlığındaki ölçekleme gibi davranışlara sahiptir. Bu tür davranışlara nasıl ulaşabileceğimizin en basit yaklaşımını size göstereceğim.
İlk blogumda söz verdiğim gibi 'DOM Nedir?' burada 'DOM işleme' üzerine bir blog var. Bu blogda DOM'a daha fazla dalacağız ve DOM işlemenin ne olduğunu ve nasıl yapıldığını öğreneceğiz.
Node.js'de akışların nasıl çalıştığını hiç merak ettiniz mi? Sahiptim.