本技能针对用 ast-grep 处理 TypeScript 与 React 代码时容易踩的坑,尤其是规则因语言或节点类型判断错误而静默匹配不到内容的情况。它假定使用者已掌握 ast-grep 的规则机制(pattern、元变量、all/any/has/inside、constraints),只补充 TS/React 特有的内容;通用规则写法请配合 ast-grep 技能使用。
适用场景:编写目标为 .ts/.tsx 的 ast-grep 模式或 YAML 规则;搜索 JSX 元素、props、React hooks、imports 或 TS 类型结构;构建重写 JSX/TypeScript 的 codemod(重命名组件、移除 React.FC、迁移 imports);排查 TSX 规则“匹配不到”的原因;通过 @ast-grep/napi 在 JS/TS 脚本中以编程方式驱动。
规则异常时的首要排查:一、检查语言,含 JSX 的文件必须用 tsx 而非 typescript,这是静默无匹配最常见的原因。二、用命令 ast-grep run --pattern '<your pattern>' --lang tsx --debug-query=ast 在真实代码片段上查看节点类型与 ERROR 节点,不要凭猜测写类型名。三、若模式是属性、prop 或类型注解等片段,需用 context + selector 包裹。
内容按六类组织:语言选择(tsx 与 typescript 之分、同时扫描 .ts 与 .tsx、languageGlobs)、片段匹配(attrs/props/类型注解的 context/selector)、JSX 节点类型(自闭合与成对元素不同、属性值中的元变量位置)、TypeScript 结构(import type 与内联 type、as 表达式转换、React.FC 泛型)、重写与 codemod(须重新输出 $$$PROPS/$$$CHILDREN,否则会被删除)、编程调用(Lang.Tsx 解析、findAll 接收 NapiConfig)。每条参考文件自包含并附示例,references/_sections.md 定义分类,AGENTS.md 为完整索引。
限制:假定使用者已了解 ast-grep 基础机制,不覆盖通用规则编写;具体命令、API 形态以技能内文档为准,其余细节暂未提供。