我正在尝试ts-morph
npm模块来取代我已经编写的一些代码,但这些代码与ts-morph
重叠并且较差。然而,我有一些采用ts.Node
类型参数的现有函数,主要用于探索和发现,我需要在尝试ts-morph
时使用它们作为参考。
然而,我看不到从ts-morph.SourceFile
实例访问底层ts.Node
实例的方法-没有返回类型为ts.Node
或ts.TypeChecker
的ts-morph
函数。
这行不通
(sourceFile as unknown) as ts.SourceFile,
(checker as unknown) as ts.TypeChecker,
因为,首先,(sourceFile as unknown) as ts.SourceFile
没有kind
成员。
是否有从ts-morph.SourceFile
访问ts.Node
实例的方法?
ts-morph提供了对它包装的所有底层编译器API对象的访问。
对于任何节点,您都可以使用compilerNode
属性访问底层编译器节点:
sourceFile.compilerNode // ts.SourceFile
请注意,无论何时通过ts-morph操作源文件(例如,向源文件添加类,删除函数或其他类似的东西),底层编译器节点都将过时。
https://github.com/dsherret/ts-morph/blob/af35677f3b498ed0f8e87e4b6c92a7246cfab210/packages/ts-morph/lib/ts-morph.d.ts L3189
要获得TypeScript的TypeChecker,使用TypeChecker
的compilerObject
属性:
project.getTypeChecker().compilerObject // ts.TypeChecker