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.

İlgili makaleler