【发布时间】:2018-06-01 06:53:57
【问题描述】:
想象一下,我有一个简单的 TypeScript 类,Animal.ts:
export default class Animal {
constructor(public name : string) { }
}
有了这个tsconfig.json 文件:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true
},
"files": [
"Animal"
]
}
如何在 javascript 文件中使用此类的编译版本(通过运行 tsc 编译),如下所示:
var Animal = require("./Animal");
var newAnimal = new Animal();
我应该在我的tsconfig.json 文件中编辑一些内容吗?我得到的错误是:
ReferenceError: Animal 未定义
【问题讨论】:
-
您也可以使用“allowJs”(在 tsconfig.json 中)让 typescript 编译 javascript 文件。这样,您就可以从您的 javascript 中引用 typescript 类。
-
由于您使用的是默认导出,我相信您必须像
var Animal = require("./Animal").default一样要求它 .default。 -
使用
export default导出会使您的导出成为一个模块。它将变为new Animal.default('name')。但是错误不可重现,Animal 导出为{ __esModule: true, default: [Function: Animal] }。 -
您可以按照
CRice所说的做或省略default关键字 -
是的,抱歉,我刚刚注意到了。我一直在使用 Babel,它也使用
module.exports = ...导出它。你可以做const { Animal } = require('./animal');。
标签: javascript node.js typescript tsc tsconfig