在TypeScript中导出多个变量以提供CommonJS等效项

时间:2018-09-18 16:48:12

标签: javascript typescript

相当于ES6中此CommonJS文件的TypeScript是什么

const Parser = require('./src/parser');
const numerics = require('./src/numerics');

module.exports = Parser;
module.exports.numerics = numerics

我尝试了许多不同的方法,这是我得到的最接近的方法:

import Parser = require('./src/parser');
import numerics = require('./src/numerics');

export = Parser

现在,问题在于,它不允许我以TypeScript方式导出其他任何内容。

如果我添加这段代码,那么一切将完全按照应有的方式工作,并且等同于原始JS代码。

module.exports.numerics = numerics;

1 个答案:

答案 0 :(得分:0)

选项1:您可以通过以下方式组合两个模块的值含义:

import Parser = require('./src/parser');
import numerics = require('./src/numerics');

const combined = Object.assign(Parser, {numerics});
export = combined;

但是,任何类型都会丢失。

选项2:由于module.exports.numerics = numerics实际上是在诱变Parser模块,因此只需在该模块中添加numerics声明就可以了,并且然后写:

import Parser = require('./src/parser');
import numerics = require('./src/numerics');

Parser.numerics = numerics;
export = Parser;

您可以修改原始模块声明,或者根据声明的编写方式,可以通过module augmentation添加numerics

如果所有代码都在您的控制之下,也许您应该只将numerics分配为parser模块的一部分,而不要使用这些奇怪的解决方法之一。