比方說,我有一個a.js
文件,其中包含:我可以爲本地JavaScript模塊創建定義文件嗎?
export function a() {}
,我希望它從文件b.ts
(在同一目錄)導入這樣的:
import { a } from './a.js'
我怎樣才能知道TypeScript a.js包含的文件,以便編譯該導入成功?
比方說,我有一個a.js
文件,其中包含:我可以爲本地JavaScript模塊創建定義文件嗎?
export function a() {}
,我希望它從文件b.ts
(在同一目錄)導入這樣的:
import { a } from './a.js'
我怎樣才能知道TypeScript a.js包含的文件,以便編譯該導入成功?
需要什麼樣的這個工作是一個名爲相同的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();
您只需簡單地用一個聲明:在同一個文件正在使用的a
(我這種情況b.ts
)
declare var a:any;
(導入後)。由於這個,TS編譯器不會抱怨。您的IDE也不會顯示錯誤。
不起作用。 TypeScript編譯器仍然抱怨缺少模塊。我正在使用TypeScript編譯器的2.0.2版本。 –
你得到了什麼錯誤? – blorkfish
@blorkfish b.ts(1,15):錯誤TS2307:找不到模塊'./a.js'。 –
我認爲你需要檢查模塊解析文檔。 https://www.typescriptlang.org/docs/handbook/module-resolution.html – blorkfish