2016-10-29 21 views
15

Benim TypeScript projemde dotenv modülünü kullanmak istediğimi ve onun .d.ts dosyasını npm install @types/dotenv --save kullanarak yüklediğimi söyle. Sonra türlerin doğru olmadığını anlıyorum. Örneğin, config() işlevi, boole değil, daha zengin bir nesne döndürmez.@ Type/package yoluyla yüklenmiş yanlış TypeScript türü tanımı nasıl yazılır

Bu durumla nasıl baş edebilirim? İndirilen tip tanımını başka bir dosyaya kopyalamalı mıyım, el ile güncelleyip @ types/dotenv'i kaldırmalı mıyım? Daha iyi bir yolu var mı? (Düzeltme işlemine hemen ihtiyacım var, bu işlemin hemen ardından, üst akış yöneticileri tarafından birleştirildikten sonra değil.)

+0

Sadece bildirimle aynı ada sahip yeni bir arabirim ekleyebilir ve yeni yöntemi sözleşme olarak ekleyebilirsiniz. – CodeNotFound

+0

Aynı yöntem, yalnızca düzeltilmiş imza ile. – Borek

+0

Bu yüzden yeni bir arabirim oluşturmanızı (d.ts'deki arabirimle aynı adı kullandığını) ve yeni imzayla yeni bir yöntem ekleyeceğinizi söylüyorum (bir aşırı yük gibi). – CodeNotFound

cevap

5

dotenv sürümünün ve @types/dotenv sürümünün hizalı olduğunu kontrol ettim, bu da işlevimin eksik olmasının nedenidir.

Eğer daha temiz iseler, .d.ts dosyasını kendiniz değiştirmek olabilir. Bunu yapmak için: npm remove @types/dotenv. Projenizde bir klasör types oluşturun. İçinde node_modules/@types bulunan tüm klasörünüdotenv kopyalayın.

{ 
"compilerOptions": { 
    "module": "commonjs", 
    "noImplicitAny": true, 
    "typeRoots": [ 
     "./node_modules/@types", 
     "./types/", 
    ] 
}, 
"files": ["./app.ts"] 
} 

(./node_modules/@types eklemeyi unutmayın:

Sonra onun içine d.ts düzeltmek ve aynı zamanda böyle typeRoots ile eksik türleri için yeni klasörde bakmasını söylemek için tsconfig.json değiştirmek veya npm ile aldığınız diğer türler artık bulunamadı.)

Umut etmenize yardımcı olur!

+0

Türler eksik değilse ne olur? Kullandığım repo artık korunmuyor (jimp). Yazım hataları var ama jimp kaynak dizininde (jimp.js ve jimp.d.ts) bildirildi. Verilen türleri geçersiz kılmak için yerel değiştirmem gerekiyor. –

+0

Cevabımı buldum. Yine de teşekkürler! https://stackoverflow.com/questions/41627631/exclude-overwrite-npm-provided-typings –

+0

ne '@ types /' paketi yoksa, bunun yerine 'module-package-name/index.d dosyasında .ts' veya 'modül-paket-adı/türleri/index.d.ts'? –