gpt4 book ai didi

typescript - 如何让 TypeScript 生成 CommonJS 有效模块?

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:19 25 4
gpt4 key购买 nike

假设我有一个 TypeScript 模块:

export default function myModule(name: string): void {
alert(`Hello, ${name}!`)
}

当我运行 tsc 构建上述代码,并尝试通过 Node.js(纯 JavaScript)导入生成的代码时:

const myModule = require('./dist/myModule.js')
myModule('Luiz') // ERROR! `myModule` is `undefined`

让它工作的唯一方法是在 require() 之后使用 .default,这不是我想要的:

//                                            ↓↓↓↓↓↓↓↓
const myModule = require('./dist/myModule.js').default
myModule('Luiz') // Now it works.

如何在没有 .default 属性的情况下让 TypeScript 生成一个输出,我以后可以将其用作 Node.js 模块(因为我将包发布到 NPM 中)?就像这样:

const myModule = require('my-module')

提前致谢。 :)

最佳答案

简答

使用 export = 构建一个导出函数的 CommonJS 模块。

TypeScript docs say :

TypeScript supports export = to model the traditional CommonJS and AMD workflow... The export = syntax specifies a single object that is exported from the module. This can be a class, interface, namespace, function, or enum.

完整设置

我的模块.ts

export = function myModule(name: string): void {
console.log(`Hello, ${name}!`)
}

tsconfig.json

{
"compilerOptions": {
"target": "es5",
"module": "commonjs"
}
}

myModule.js(输出)

"use strict";
module.exports = function myModule(name) {
console.log("Hello, " + name + "!");
};

demo.js(使用)

const myModule = require('./my-module');

myModule('Luiz'); // Hello, Luiz!

关于typescript - 如何让 TypeScript 生成 CommonJS 有效模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56402067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com