是否可以将 Typescript 导入到 ts-node REPL 的 运行 实例中?

Is it possible to import a Typescript into a running instance of ts-node REPL?

我想测试一些我编写的 Typescript 代码。

到目前为止,我知道最好的方法是 运行 ts-node my-file-name.ts.

不过,我想让它更具交互性,类似于 Python REPL 允许您导入模块,然后随心所欲地从 REPL 调用函数。

例如,会话可能如下所示

$ ts-node
> import my-file-name.ts
> myFunctionFromMyFile("specialParam")
> "you just called a function from my-file-name.ts with param specialParam"

ts-node可以吗?

我发现的一种方法如下:

$ ts-node
> import * as abc from './my-file'
> abc.myFunction()
> "works!"

如果您需要在每个 REPL 会话中自动导入的内容,您可以在文件中公开您的应用程序,然后在该文件中使用 repl.start。例如,像这样创建 console.ts

import repl from 'repl';
import * as models from './models';

Object.keys(models).forEach((modelName) => {
  global[modelName] = models[modelName];
});

const replServer = repl.start({
  prompt: 'app > ',
});

replServer.context.db = models;

并且运行控制台使用

$ node --require ts-node/register/transpile-only --experimental-repl-await console

更多详情here