SuperAPI AI 工具集

context-type-inference

通用与其它

查看项目

更新于 10-16 06:45

技能介绍

用途:解决 TypeScript 中因“值脱离上下文”而产生的类型错误。TypeScript 的类型推断同时依赖值本身和它被使用的位置;把值提取到变量后上下文丢失,类型会被拓宽,从而报错。

主要能力与用法:

  1. 字面量拓宽:setLanguage('JavaScript') 内联可用,但 let language = 'JavaScript' 会被推断为 string。修复方式:加类型注解 let language: Language = 'JavaScript';改用 const;或 let language = 'JavaScript' as const。
  2. 元组变数组:panTo([10, 20]) 内联可推断为元组,const loc = [10, 20] 会变成 number[]。修复:const loc: [number, number] = [10, 20] 或 as const(注意 as const 产生 readonly,若函数需要可变元组则不适用,函数应接受 readonly [number, number])。
  3. 对象属性:satisfies Record<string, Point> 可在保留精确键和元组类型的同时提供上下文;类型注解会丢失精确键,访问不存在的属性不报错。
  4. 回调:内联回调参数类型由上下文推断,无需重复注解;提取为独立函数后参数变为 any,需显式标注如 express.RequestHandler。
  5. 深层 as const:对象整体变为 readonly 且保留字面量类型。

限制与原则:不要用 as Type 断言绕过安全,应使用 as const 或 satisfies。判断依据:提取后报错、回调参数为 any、元组变数组、字符串字面量变 string,都说明上下文丢失。内容基于《Effective TypeScript》第 24 条。