angularjs - VS Code'da Tutarsız "x adını bulamıyor" Typescript hataları
Uygulamam sorunsuz bir şekilde derleniyor (transpile ediliyor), ama Visual Studio Code hala birçok hata gösteriyor:
Bu durumların bazılarında (ör. angular ve ionic) sorun, Angular/Ionic dahil etmemiz yoluyla eklenen bir global değişken/isim alanının tanınmamasıdır. Hataların çoğu "'angular/ionic/ng' adını bulamıyor" (vb.) şeklindedir.
İşleri daha da garipleştirmek için, VS Code'u yüklediğimde başlangıçta açılan dosyada hiç hata olmadığını fark ettim. Kırmızı alt çizgili hatalar diğer sekmelerde/düzenleyicilerdeki diğer dosyalarda bulunuyor.
Ne oluyor? VS Code’un bu global/isim alanlarının aslında var olduğunu sürekli olarak nasıl kabul etmesini sağlayabilirim?
Cevap #1
Bu sorunu takip ettiğim birçok üzücü günden sonra - sonunda ne olup bittiğini açıklayan bir VS Code GitHub sorununu GitHub'da buldum.
özet
tsconfig.json dosyam yanlış yapılandırılmıştı. Bunu düzeltmek için files bölümünü kaldırdım. Projenizde de onu kaldırmanız gerekebilir veya belki sadece tüm ilgili .ts dosyalarını içerecek şekilde "düzeltmeniz" gerekebilir.
Daha uzun versiyon
Bir dosyalar [bölümü] eklemek, projemizi bu iki dosyayla sınırlıyor ve eğer bu iki dosya tarafından referans verilmeyen diğer dosyaları açarsanız, bunlar izole bir sanal projede yer alır. Ya dosyalar bölümünü bırakmanız gerekir (o zaman tsconfig.json dosyasının altındaki tüm .ts dosyaları otomatik olarak projenin bir parçası olarak kabul edilir) ya da projenizin tüm dosyalarını o bölümde listelemeniz gerekir.
Orijinal `tsconfig.json` dosyam şuydu:
{
"compilerOptions": {
"target": "es5",
"sourceMap": true,
"removeComments": true,
"noImplicitAny": true
},
"files": [
"typings/index.d.ts",
"src/typings/index.d.ts"
]
}
Yani, VS Code projemin yalnızca iki dosyadan oluştuğunu düşündü. Yüklediğim diğer .ts dosyalar ise bir "izole sanal proje" olarak kabul edildi - neden hata ürettiklerini anlamak zor değil.
Ben tsconfig.json dosyamı aşağıdaki şekilde değiştirdim:
{
"compilerOptions": {
"target": "es5",
"sourceMap": true,
"removeComments": true,
"noImplicitAny": true
}
}
Problem çözüldü!
