问题描述
我正在尝试为 js 包创建一个 .d.ts 文件,以便我可以从该包中获得 typescript 导入功能。该包使用 Commonjs 风格来定义其导出的函数。 (不是 es6 文件。)
包的主要属性从其 package.json
定向到文件:index.js
。 index.js
文件显示为:
'use strict'
const Plugins = require('./Plugins')
module.exports = {
plugins: Plugins
}
来自 Plugis.js 文件:
module.exports.function1 = function1() {// function1 content};
module.exports.function2 = function2() {// function2 content};
module.exports.function3 = function3() {// function3 content};
在纯 JavaScript 中,这是有效的,我可以使用任何 const Plugins
导出函数。
我正在尝试创建一个具有类似组成的打字稿版本 index.d.ts:
'use strict'
import Plugins from './Plugins'
module.exports = {
plugins: Plugins
}
但是,当我导入 js 包并尝试使用导出的函数时出现错误。例如,可以使用 plugins.function1()
。我一直在研究这个主题并遵循了几个示例,但是我不断收到错误,例如如果我声明了我想要使用的函数,并且示例使用了来自 es6 样式文件的导入。导入所有文件功能的正确方法是什么?
解决方法
解决了我的问题。除了创建 index.d.ts 之外,我还必须创建一个 Plugins.d.ts 文件,然后声明所有导出的函数。
插件.d.ts:
declare export function1 = function1(): <Return value> {// function1 content};
declare export function2 = function2(): <Return value> {// function2 content};
declare export function3 = function3(): <Return value> {// function3 content};
对于 index.d.ts,我的导出和声明也关闭了,但我能够更正它。 index.d.ts:
import * as Plugins from "./Plugins";
declare module "compatible-package-example" {
export {Plugins}
}
现在当我导入这个包时,我可以毫无问题地使用导出的函数。