2016-09-15 113 views
1

比方說,我有一個a.js文件,其中包含:我可以爲本地JavaScript模塊創建定義文件嗎?

export function a() {} 

,我希望它從文件b.ts(在同一目錄)導入這樣的:

import { a } from './a.js' 

我怎樣才能知道TypeScript a.js包含的文件,以便編譯該導入成功?

+0

你得到了什麼錯誤? – blorkfish

+0

@blorkfish b.ts(1,15):錯誤TS2307:找不到模塊'./a.js'。 –

+0

我認爲你需要檢查模塊解析文檔。 https://www.typescriptlang.org/docs/handbook/module-resolution.html – blorkfish

回答

0

需要什麼樣的這個工作是一個名爲相同的JavaScript文件(a.d.ts在這種情況下)打字稿定義文件,其中包含:

export function a(); 

它也可以指定參數類型,附加的導出函數和類必須使用export關鍵字來指示JavaScript文件實際公開的內容。其他

的一個變化是,這個JavaScript模塊需要在b.ts然後被導入爲:

import { a } from './a' // without .js 

所以需要打字稿定義文件考慮在內。它仍然會使用從a.js文件執行。它也適用於webpack。


如果你不想來形容裏面有什麼a.js並有打字稿只是接受它,你可以創建a.d.ts文件這樣的:

declare var whateva:any; 
export = whateva; 

然後你可以導入這樣的:

import * as ajs from './a' 

然後參考您的TypeScript文件中的a.js所公開的任何函數:

ajs.a(); 
1

您只需簡單地用一個聲明:在同一個文件正在使用的a(我這種情況b.ts

declare var a:any; 

(導入後)。由於這個,TS編譯器不會抱怨。您的IDE也不會顯示錯誤。

+0

不起作用。 TypeScript編譯器仍然抱怨缺少模塊。我正在使用TypeScript編譯器的2.0.2版本。 –

相關問題