2016-04-09 22 views
0

İlk Typescript tanımlama dosyasını oluşturmaya çalışıyorum. Bugüne kadar varTypescript "dış paket yazımları bir modül değil"

module.exports = { 
    extension: extension, 
    basename: basename, 
    removeSuffix: removeSuffix, 
    removeSuffixWithDelimiter: removeSuffixWithDelimiter, 
    appendSuffix: appendSuffix, 
    appendSuffixWithDelimiter: appendSuffixWithDelimiter, 
    directoryName: directoryName 
} 
function extension(filename) {} 
function basename(filename) {} 
function removeSuffix(filename) {} 
function removeSuffixWithDelimiter(delimiter, filename) {} 
function appendSuffix(suffix, filename) {} 
function appendSuffixWithDelimiter(suffix, delimiter, filename) {} 
function directoryName(filename) {} 

tanımlı (index.d.ts) dosyası: özne kodu filename.js (index.js) 'dir

declare module "filename.js" { 
    export function extension(filename: string): string; 
    export function basename(filename: string): string; 
    export function removeSuffix(filename: string): string; 
    export function removeSuffixWithDelimiter(delimiter: string|number, filename: string): string; 
    export function appendSuffix(suffix: string, filename: string): string; 
    export function appendSuffixWithDelimiter(suffix: string, delimiter: string|number, filename: string): string; 
    export function directoryName(filename: string): string; 
} 

Bu yeterince iyi (otomatik tamamlama işleri In my editör), ama bir derleme hatası alıyorum:

index.ts(21,29): error TS2656: Exported external package typings file 'filename.js/index.d.ts' is not a module. Please contact the package author to update the package definition.

bu hata (yeni) typescript için ne ifade ediyor ve daha da önemlisi, nasıl daha doğru yapmak benim tanımını değiştirmek gerekir? Size tarafından sağlanan verilere ilişkin

+0

Bunu düzeltebildiniz mi? Aynı sorunu yaşıyorum. – emzero

+0

@emzero no Şimdiye kadar bulamadık –

+0

Umarız TS 2.0 – emzero

cevap

1

tanımı dosyası olabilir: -

declare module customTypings{ 
interface filename{ 
    extension(filename: string): string; 
    basename(filename: string): string; 
    removeSuffix(filename: string): string; 
    removeSuffixWithDelimiter(delimiter: string|number, filename: string): string; 
    appendSuffix(suffix: string, filename: string): string; 
    appendSuffixWithDelimiter(suffix: string, delimiter: string|number, filename: string): string; 
    directoryName(filename: string): string; 
} 
} 

Sen belirterek bu tipleme dosyasını kullanabilirsiniz: - eğer çalışırsa

/// <reference path="pathName" /> 

bakınız.

Daha fazla bilgi için önceden oluşturulmuş .d.ts dosyalarını bakın. Örneğin. angular-material.d.ts

+0

ile aynı hata düzeltildi Maalesef aynı hata. Ayrıca, örnek, doğru otomatik tamamlamalar sağlamaz. –

+0

zaten oluşturulmuş .d.ts dosyasını gördünüz mü? Bu dosyaları kodumuzda ekstra bir şey içermememiz için yaratırken o dosyalara başvurmalıyız. – Ajay

+0

Soruya index.d.ts dosyamı ekledim. –