2017-12-27 502 views
0

我在foo/bar.js內部有一個帶有Node JS模塊的項目。現在我正在編寫一個TypeScript模塊src/mymod.ts,它應該導入foo/bar.js。如何爲foo/bar.js模塊編寫聲明文件?聲明文件應該放在哪裏?嵌套模塊的聲明文件

我試着放置一個聲明文件中foo/bar.d.ts但是當我import * as bar from "../foo/bar"在我的打字稿模塊,我得到以下錯誤:

File '/tmp/my_proj/foo/bar.d.ts' is not a module. 

這是我tsconfig.json文件

{ 
    "compilerOptions": { 
    "allowJs": true, 
    "outDir": "./dist/", 
    "target": "es2017", 
    "module": "commonjs", 
    "strictNullChecks": true 
    }, 
    "include": [ 
    "./src/" 
    ] 
} 

這是我的申報文件:

// Type definitions for bar 
declare module "bar" { 
    function fun1(n: number) : number; 
    function fun2(n: number) : number; 
    function fun3(n: number) : number; 
} 
+0

在我看來,'bar.d.ts'沒有正確聲明,如果你沒有任何'export'語句,它不是一個能夠解釋錯誤的模塊 - 如果你可以包含在你的問題中,我可能會幫助更多的文件。 – Gerrit0

+0

@ Gerrit0忘了添加聲明文件。現在補充,謝謝 –

+0

@ Gerrit0所以,我已經設法解決這個問題,通過刪除'module'構造並添加'export'到函數(實際上我有幾個函數)。我認爲模塊是自動導出的? –

回答

1

p

export function fun1(n: number) : number; 
export function fun2(n: number) : number; 
export function fun3(n: number) : number; 

我已經用此溶液來了,當我讀過@ Gerrit0的評論:如果我改變的聲明文件到以下roblem是固定的。如果有人可以用解釋寫出更好的答案,我會改變答案。