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
您可以使用
检查一串js
一串JS很容易检查。 只需使用编译器API中的