假设我有一个 a.js
文件,其中包含:
export function a() {}
我希望它像这样从文件 b.ts
(在同一目录中)导入它:
import { a } from './a.js'
我如何告诉 TypeScript 文件 a.js 包含什么,以便此导入的编译成功?
最佳答案
此工作需要的是与 JavaScript 文件(在本例中为 a.d.ts
)同名的 typescript 定义文件,其中包含:
export function a();
它还可以指定参数类型、额外的导出函数和类,并且必须使用 export
关键字来指示 JavaScript 文件实际公开的内容。
另一个变化是这个 JavaScript 模块需要在 b.ts
中导入为:
import { a } from './a' // without .js
所以它考虑了 typescript 定义文件。它仍将使用 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();
关于javascript - 我可以为本地 JavaScript 模块创建定义文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39513195/