javascript - 导出值而不是变量

标签 javascript typescript ecmascript-6

我一直在尝试测试一个仅导出数字的模块以及一个递增该数字的函数:

// counter.js
export var number = 0;
export function increment() {
  number++;
}

然后我按如下方式使用该模块:

// index.js
import { number, increment } from './counter';

console.log(number);
increment();
console.log(number);

我正在使用 JSPM 来加载模块,以防万一这很重要。如果我运行它,我会得到预期的输出:

0
1

但是,如果我只是将 counter.js 更改为 counter.ts 并让 TypeScript 转译此模块,我的输出最终将是:

0
0

转译的 counter.js 看起来像:

// counter.js
"use strict";
exports.number = 0;
function increment() {
    exports.number++;
}
exports.increment = increment;

此外,这是我的 tsconfig.json:

// tsconfig.json
{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "noImplicitAny": false,
        "sourceMap": false
    }
}

这是 TypeScript 转译此模块(并导出数字常量值,而不是变量本身)的错误,还是我在这里遗漏了一些东西?

最佳答案

我有完全相同的转译输出和 tsconfig.json 设置,但我得到了预期的输出:

0
1

我看到的唯一区别是您在这里使用 JSPM,而我没有;我只是使用 Node.JS(v6.2.0,使用 TypeScript 3.8.9)运行您的代码。

如果有帮助,有效的 tsconfig.json 文档 --module options 表示 amd、commonjs、system 是一些有效的选项。

我创建了工作代码的 git 存储库。

https://github.com/TWebster/counter

我正在使用 vscode 进行调试以防万一。

关于javascript - 导出值而不是变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38023513/

相关文章:

javascript - 如何从类实例获取 JavaScript 类构造函数参数

javascript - 如何让 getJSON 在运行其余代码之前等待?

javascript - 如何将jQuery添加的元素设置到其他元素的后面

javascript - 如何使用 PHP 修改 JSON 中此 mySQL 查询的显示?

typescript - 如何访问可为空的 typescript 嵌套类型

javascript - 如何在 Node js中包装长sql语句

javascript - 从 ng-view 文件 Angular 加载图像

typescript :在算术运算中使用 bool 类型

angular - 如何将 webrtc 适配器 js 包含到 Angular5 应用程序中

javascript - 使用 javascript 创建 key 来访问对象中的项目