typescript-compiler-api - typescript,ts-morph 模块,是否可以从 ts-morph.SourceFile 实例访问底层的 ts.SourceFile 实例?
问题描述
我正在尝试使用ts-morph
npm 模块来替换一些我已经编写但重叠ts-morph
且质量较差的代码。不过,我有一些现有的函数采用ts.Node
类型参数,主要用于探索和发现,我需要在尝试时使用它们作为参考ts-morph
。
但是,我看不到ts.Node
从ts-morph.SourceFile
实例访问底层实例的方法 - 没有ts-morph
返回类型为ts.Node
or的函数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
?
解决方案
ts-morph 提供对其包装的所有底层编译器 API 对象的访问。
对于任何节点,您都可以使用以下compilerNode
属性访问底层编译器节点:
sourceFile.compilerNode // ts.SourceFile
请注意,只要通过 ts-morph 操作源文件(例如,您将类添加到源文件、删除函数或其他类似的东西),底层编译器节点就会变得过时。
要获取 TypeScript TypeChecker,请使用以下compilerObject
属性TypeChecker
:
project.getTypeChecker().compilerObject // ts.TypeChecker
推荐阅读
- angular - Angular filereader onloadend 返回结果
- python - 仅打印来自 .groups() 的匹配正则表达式模式
- swift - swiftUI中insertSublayer的替代方法是什么
- submit - AngleSharp 提交表格
- python - 加速器数据应该具有什么结构来进行模型预测?
- python - 使用 SqlAlchemy 执行原始查询(在 SQL-Server 数据库和 Pymssql 上)时传递参数无法识别并引发 SQL 错误
- c - pthread_mutex_lock 无法获取锁
- python - OpenCV 错误:简单的人脸检测初学者代码中的断言失败
- angular - Angular 9 的库构建失败
- java - 如何在 Spring webflux 层次结构中发布数据?