假设我有一个a.js
文件,其中包含:
export function a() {}
我希望它从文件b.ts
(在同一目录中)中导入它,如下所示:
import { a } from './a.js'
如何告诉TypeScript a.js包含哪些文件,以便编译此导入成功?
答案 0 :(得分:2)
这需要做的是打字原稿定义文件,其名称与JavaScript文件(在本例中为a.d.ts
)相同,其中包含:
export function a();
它还可以指定参数类型,其他导出函数和类,并且必须使用export
关键字来指示JavaScript文件实际公开的内容。
另一个变化是,此JavaScript模块需要在b.ts
中导入为:
import { a } from './a' // without .js
所以它需要考虑打字稿定义文件。它仍将使用a.js
文件中的实现。它也适用于webpack。
如果您不想描述a.js
内的内容并让TypeScript接受它,您可以创建a.d.ts
这样的文件:
declare var whateva:any;
export = whateva;
然后你可以像这样导入它:
import * as ajs from './a'
然后在TypeScript文件中引用由a.js
公开的任何函数,如:
ajs.a();
答案 1 :(得分:1)
您只需使用声明:
declare var a:any;
(导入后)在同一个文件中,您正在使用a
(我在b.ts
中的情况)。多亏了这个,TS编译器不会抱怨。您的IDE也不会显示错误。