我认为const greet = require('./greet');
相当于import greet from './greet';
。
所以这两个文件应该一起工作:
greet.ts
:
export default ({ name, age }) => `Name: ${name}, Age: ${age}`;
test.js
:
const greet = require("./greet");
greet({ name: 'Smith', age: 21 });
但在编译之后,greet.ts
原来是:
"use strict";
exports.__esModule = true;
exports["default"] = (function (_a) {
var name = _a.name, age = _a.age;
return "Name: " + name + ", Age: " + age;
});
而不是:
module.exports = (function (_a) {
var name = _a.name, age = _a.age;
return "Name: " + name + ", Age: " + age;
});
为什么会这样?
答案 0 :(得分:1)
Typescript编译器将--target作为ES5或ES6。这取决于您为TS设置的编译器选项。 代码在此基础上总是不同的,你不能指望类似的JS被证明。
那么TypeScript在ES2015上提供了什么?我觉得增加最多的价值:
答案 1 :(得分:1)
如果您编写export default
,则使用"default"
密钥导出该成员。以下是如何使用CommonJS导入它:
// test.js
const greet = require("./greet").default;
greet({ name: 'Smith', age: 21 });
我建议来自Mozilla的文章ES6 In Depth: Modules:
默认导出没有什么神奇之处;它就像任何其他导出一样,除了名为
"default"
。