如何在Javascript中使用已编译的TypeScript类

Tit*_*lum 5 javascript node.js typescript tsc tsconfig

想象一下,我有这个简单的TypeScript类Animal.ts

export default class Animal {
  constructor(public name : string) { }
}
Run Code Online (Sandbox Code Playgroud)

使用此tsconfig.json文件:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "strict": true
  },
  "files": [
    "Animal"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我如何tsc在JavaScript文件中使用此类的编译版本(通过运行进行编译),如下所示:

var Animal = require("./Animal");

var newAnimal = new Animal();
Run Code Online (Sandbox Code Playgroud)

我应该编辑tsconfig.json文件中的内容吗?我得到的错误是:

ReferenceError:未定义动物

Tit*_*lum 6

正如Shane van den Bogaard指出的那样,需要省略default关键字 inAnimal.ts并且:

const { Animal } = require('./Animal');
Run Code Online (Sandbox Code Playgroud)

应该使用而不是

var Animal = require('./Animal');
Run Code Online (Sandbox Code Playgroud)

这样我们就可以调用Animal类并使用以下方法初始化一个对象

const { Animal } = require('./Animal');
var newAnimal = new Animal("Clifford");
Run Code Online (Sandbox Code Playgroud)