TypeScript:如何从 JS 文件导入所有导出函数,然后声明所有这些函数

问题描述

我正在尝试为 js 包创建一个 .d.ts 文件,以便我可以从该包中获得 typescript 导入功能。该包使用 Commonjs 风格来定义其导出的函数。 (不是 es6 文件。)

包的主要属性从其 package.json 定向到文件index.jsindex.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}
}

现在当我导入这个包时,我可以毫无问题地使用导出的函数。