TypeScript 报错诊断 Prompt:晦涩报错模板

14 个 Prompt 帮你快速诊断 TypeScript 报错——泛型、条件类型、类型收窄、模块解析、声明文件。

TS 报错文字密、又容易误导——TS 指的那一行往往不是真原因,七行”Type A is not assignable to type B”墙后藏着的可能是三个文件之外的一个 missing property。下面这些 Prompt 强制模型从报错行反推到真原因、区分”修代码 vs 修类型”,并给出最小 diff——不是大改也不是一句 as any 糊上。报错出在 React 树里可配合 React 组件重构 Prompt

这套 Prompt 适合用在哪

  • 日常 TS 开发
  • 调库的类型问题
  • JS → TS 迁移
  • TS 代码 PR 评审
  • 熟悉新 TS 代码库

1. 反推诊断

下面是一条 TS 报错。请从报错行反推真正原因。输出:(a) TS 以为哪里错;(b) 实际错在哪;(c) 最小修复 diff;(d) 修代码还是修类型。

报错:
{粘贴含文件名}

代码上下文:
{粘贴 20-30 行}

2. “Type X is not assignable to Y” 诊断

TS 报 "Type {X} is not assignable to type {Y}"。请诊断:(a) TS 期望什么;(b) 实际是什么;(c) X 与 Y 的结构差异;(d) 是真 bug 还是类型收窄问题。

代码:
{粘贴}

3. 泛型推断失败

TS 没能推断出某个泛型。下面是调用点。输出:(a) TS 尝试推哪些泛型;(b) 哪个参数让推断失败;(c) 能让它通过的显式注解;(d) 函数签名是否需要改。

{粘贴}

4. 条件类型调试

某条件类型选错分支。下面是类型定义和一个样本输入。请逐步走过每个条件,写出 TS 在每一步计算出什么。

{粘贴}

5. 模块解析诊断

TS 报 "Cannot find module {X}" 或 "Module {X} has no exported member {Y}"。请诊断:(a) tsconfig paths / moduleResolution;(b) package.json exports;(c) 声明文件;(d) 修复。

{粘贴错误 + tsconfig + package.json 节选}

6. excess property 检查的困惑

把对象赋给变量时多出的属性 TS 允许,但内联传参却不允许。下面是代码。请解释 TS 的 excess-property 检查规则,并给出正确处理方法。

{粘贴}

7. “类型保护没收窄” 诊断

我写了类型保护但 TS 仍报错。下面是代码。请诊断收窄失败原因:(a) 是不是非 user-defined guard;(b) 是不是值被中转重赋值;(c) async / 闭包丢失收窄;(d) 修复。

{粘贴}

8. .d.ts / ambient 声明审计

我项目用 {library} 但类型缺失或错误。请走一遍:(a) 是否随包发了类型;(b) 是否有 @types;(c) 是否要自写 .d.ts;(d) 自写 .d.ts 的骨架。

{粘贴 imports + 报错}

9. tsconfig strict 修复

我开了 {strict | noImplicitAny | strictNullChecks | exactOptionalPropertyTypes} 后多了 {N} 个错。下面挑 5 条代表性的。请逐条分类(真 bug / 只是类型 / 需要重构)并给修复模式。

{粘贴}

10. React 组件 prop 类型修复

我的 React 组件 props 报 TS 错。下面是组件 + 使用。请诊断:(a) prop 类型 vs 使用差异;(b) 泛型组件问题;(c) HOC 丢失类型;(d) 最小修复。

{粘贴}

11. zod / yup / runtime schema 与 TS 类型不一致

我的运行时 schema({zod / yup})与 TS 类型不一致。下面是 schema + 推断类型 + 手写类型。请诊断漂移并给保持同步的方案。

{粘贴}

12. “any” 大扫除

下面文件存在隐式 any。逐处列出、解释为什么 TS 推不出来、提议显式类型。按风险由高到低排。

{粘贴}

13. 迁移:JS → TS 一文件一步

我在把 {file.js} 迁移到 TS。下面是文件。请输出分步迁移计划:(a) 先引入哪些类型;(b) 对应运行时形态的 union / intersection 结构;(c) 哪些函数可以暂时宽松。

{粘贴}

14. TS 报错按影响分类

下面是 `tsc --noEmit` 的 30 条报错。请分类:(a) 真 bug(修代码);(b) 只是类型(修类型);(c) 需要重构;(d) 暂时注释抑制 + 原因。按影响范围排序。

{粘贴}

容易踩的坑

  • any 让报错闭嘴——把 bug 推到运行时,问题更严重
  • 完全信报错行——通常是真错位置的下游
  • 直接 as 强转而不去理解结构差——静态隐患
  • strict / noImplicitAny 让 build 过——把用 TS 的全部意义都让出去了
  • 跟类型系统对抗而不是重构底层形态
  • 没把完整报错链贴上来——第二三行往往才是真元凶

相关阅读

标签: #Prompt #AI 编程 #AI 编程