首页 > 解决方案 > typescript,ts-morph 模块,是否可以从 ts-morph.SourceFile 实例访问底层的 ts.SourceFile 实例?

问题描述

我正在尝试使用ts-morphnpm 模块来替换一些我已经编写但重叠ts-morph且质量较差的代码。不过,我有一些现有的函数采用ts.Node类型参数,主要用于探索和发现,我需要在尝试时使用它们作为参考ts-morph

但是,我看不到ts.Nodets-morph.SourceFile实例访问底层实例的方法 - 没有ts-morph返回类型为ts.Nodeor的函数ts.TypeChecker

这不起作用

      (sourceFile as unknown) as ts.SourceFile,
      (checker as unknown) as ts.TypeChecker,

因为,对于初学者来说,(sourceFile as unknown) as ts.SourceFile没有kind会员。

有没有办法从例如访问底层ts.Node实例ts-morph.SourceFile

标签: typescript-compiler-apits-morph

解决方案


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,请使用以下compilerObject属性TypeChecker

project.getTypeChecker().compilerObject // ts.TypeChecker

推荐阅读