ReaScript Native uygulamam TypeScript derleyici hatasına rağmen neden başarıyla oluşturuluyor?


15

Kısa bir süre önce Expo ile TypeScript kullanmaya başladım. typescript-eslintKodlama sırasında hataların çoğunu yakalayabilmem için tüm linter / formatter entegrasyonlarını yaptım. Kodun derlenip derlenmediğini kontrol etmek için, npx tscarada bir çalıştırıyorum ve buna göre düzeltiyorum.

Henüz tam olarak kavramadığım bir şey, sayısız derleme hatası olsa bile uygulamamın neden başarılı bir şekilde oluşturulduğudur. Uygulama başarıyla oluşturmak yerine her derleme hatası için kırmızı ekran hatası görmeyi bekliyorum (ve tercih ediyorum) ve daha sonra öğreneceğim. Örneğin,

function square<T>(x: T): T {
  console.log(x.length); // error TS2339: Property 'length' does not exist on type 'T'.
  return x * x;
}

derleme zamanında kolayca kontrol edilebilir tipik bir TypeScript hatasıdır. Ben büyük bir kırmızı ekran hatası ve yapı başarısız sonuçlanmasını istiyorum.

TypeScript için oldukça yeniyim, bu yüzden çok önemli bir şeyi kaçırmam mümkün. Tam olarak bu hoşgörüye neden olan nedir ve daha sıkı kontroller uygulamanın bir yolu var mı?


"Başarılı bir şekilde derleme" ile JS zaten çıktı demek, ya da bir noktada derleyici hata mesajı yok mu demek istiyorsun?
ecraig12345

2
Yani JS zaten çıktı ve uygulamayı dev modunda çalıştırabilir ve hatta herhangi bir sorun olmadan üretim uygulaması inşa edebilirsiniz. Derleme zamanında bunu önlemek için TypeScript umuyordum. Derleyici hata iletileri her zaman çalıştırdığımda gösteriliyor, npx tscancak normal JS hataları için yaptığım gibi her tipScript hatası için kırmızı bir ekran almak istiyorum, const n = 23; n.reverse();bunun gibi "n.reverse bir işlev değil. 'n.reverse ()', 'n.reverse' undefined) "
anar

2
Bunu da çok garip buluyorum. Ben de buna yeterli bir çözüm bulamıyorum.
Simon Bengtsson

Yanıtlar:


2

Anlaşılması gereken ilk şey, Typcript'in Javascript'in bir üst kümesi olması ve bu durumda aslında derleme sırasında tipin kontrol edilmemesi.

Esasen ne olur Babel sadece Typcript'i çıkarır ve Javascript'e dönüştürür, bu da js paketlerine derlenir.

Aşağıdaki Babel belgelerinin ilk satırına ve uyarılara bir göz atabilirsiniz: https://babeljs.io/docs/en/next/babel-plugin-transform-typescript

Babel yazım denetimi yapmadığından, sözdizimsel olarak doğru olan ancak başarısız olan kod, TypeScript yazım denetimi başarıyla dönüştürülebilir ve genellikle beklenmedik veya geçersiz şekillerde olabilir.

Ne öneririm ilk tsconfig içinde true tscolarak noEmitayarlanmış , inşa komutunu ilk veya daha fazla Typescript derleme genişletmek .

Güncelleme : Bir proje eklerken jestve typescriptbir projeye bunun son zamanlarda uygulandığı başka bir örnek buldum . Jest belgelerinin altında aslında aynı şeyi belirtiyorlar:

https://jestjs.io/docs/en/getting-started#using-typescript

Ancak, TypeScript'i Babel ile kullanmanın bazı uyarıları vardır. Babel'deki TypeScript desteği transpilasyon olduğundan, Jest testlerinizi çalıştırıldıkları sırada yazmaz. Eğer isterseniz ts-jest kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.