键入检查TypeScript代码的字符串

Type-check a string of TypeScript code

我的情况:

  • 我有一个包含API响应类型信息的库。 (例如:获取用户对象返回带有{ id: number, name: string }的对象)。
  • 我想验证我是否正确编写了我的类型,并在API发生变化时捕获任何问题。

到目前为止我做了什么:

我有一个生成一些TypeScript代码的程序,基本上从api中提取数据,然后查看TypeScript编译器是否同意它与接口匹配。

最终结果如下:

1
2
3
4
5
6
import { User } from './user';

function verify< T >(data: T) {}

verify<User>({ id: 123, name: 'Joe' });
verify<User>({ id: 123, name: 17 }); // <-- obviously, this should give an error

生成此代码已全部完成,但我现在需要让编译器键入检查它。我已经在typescript编译器API中挖掘了一段时间并且一直卡住,因为似乎做我需要的所有函数都采用文件名(即:磁盘上的路径)而不是一串代码。我理解,由于对其他文件的引用,需要有一个与代码相关的路径,但我找不到任何方法来传递它。

我想避免将这些文件写入磁盘,因为

a)它看起来有点傻,因为它只是从磁盘上读取
b)它可能会在源文件中变得非常混乱,或者我必须将它放在一个单独的文件夹中,然后重写所有的import语句。

TL;我的问题的DR是:

有没有办法对TypeScript代码字符串进行类型检查?


两种解决方案

不必为了运行ts而将js写入磁盘

I'd like to avoid having to write these files to disk because

您可以使用ts-node:https://github.com/TypeStrong/ts-node

检查一串js

一串JS很容易检查。 只需使用编译器API中的ts.transpile即可。 那说......你不想只检查一串js。 您想要检查一组文件。 因此建议只使用ts节点。