typescript - noImplicityAny ve allowJs olmadan TS içinde JS nasıl import edilir
Mixed TypeScript ve JavaScript projesini derlemek için Webpack ve @babel/typescript kullanıyorum.
Tiplerden yararlanmayı teşvik etmek için --noImplicitAny kullanıyorum.
--allowJs kullanmıyorum çünkü projem o kadar büyük ki TypeScript derleyicisini zorlayıp Visual Studio'nun vurgulama/Intellisense özelliğini bozuyor.
Tipi belirtilmemiş npm modülleri için, eğer tipleri eklemeye zamanım yoksa, onun tipini açıkça any olarak ayarlamak için bir tanım dosyası oluştururum. Örneğin
example.ts
import * as elemDataset from 'elem-dataset';
elem-dataset.ts
declare module 'elem-dataset';
Bu derleyiciyi tatmin eder. Ama henüz TS'ye çevirmediğim dahili modüller için...
import * as example from './example2'; // Where example2 is example2.ts
Bu hatayı alıyorum:
'./example2' modülü için bir tür bildirimi dosyası bulunamadı. C:/blah/blah/blah/example2.js dosyası dolaylı olarak 'any' türüne sahiptir.
Bu cevapta olduğu gibi bir tür bildirimi eklemeyi denedim.
example2.d.ts
declare var example2: any;
declare module "example2" {
export = example2;
}
Ama sonra bu hatayı alıyorum:
C:/blah/blah/blah/example2.d.ts dosyası bir modül değildir.
Ayrıca bu cevaba göre declare module '*' ; denedim, ama yukarıdakiyle aynı hatayı aldım.
Bir iç JS dosyasının import türünü açıkça any olarak nasıl ayarlayabilirim?
Cevap #1
Anlaşılan bu benim ihtiyaçlarım için yeterli:
// @ts-ignore
import * as x from './example2';
Başta denemedim, çünkü o yorumun tüm dosya için tür denetimini devre dışı bırakacağını düşündüm.
Ama @ts-ignore ifadesini import'tan hemen önce kullanmak, tek bir JavaScript dosyasını dönüştürmek için zamanım olana kadar görmezden gelirken projenin geri kalanı için tür denetimini zorlamama izin veriyor.
