You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript Interface校验仅提示单个错误 无法同时识别多个错误原因咨询

这是TypeScript对象字面量校验逻辑的设计限制,不属于Bug。

原因说明

TypeScript对显式标注了类型的对象字面量做校验时,会按优先级执行两类检查:

  • 第一优先级:校验对象上已存在的、目标类型也包含的属性的类型是否匹配
  • 第二优先级:校验对象上是否存在目标类型未定义的多余属性

如果第一优先级的检查就发现了错误,TypeScript会直接终止后续的第二优先级校验。你给出的示例中,saved属性类型不匹配属于第一优先级检查项,触发错误后就跳过了多余属性averageScore的校验,所以只会显示一处报错。当你注释掉saved的错误代码后,第一优先级校验通过,才会执行第二优先级检查,提示averageScore是多余属性。这种设计的初衷是避免基础类型不匹配时,输出大量无意义的多余属性错误,减少无效报错的干扰。

同时触发两处报错的方法

你可以拆分对象定义和类型赋值的步骤,就能同时拿到两个错误提示:

interface Saved {
  highScore?: number;
  levelsComplete?: number;
}

interface GameData {
  score: number;
  timeTaken?: number; 
  saved?: Saved; 
}

// 先定义原始对象,不标注类型
const rawGameData = {
  score: 0,
  timeTaken: 60,
  saved: [1, 2, 3], 
  averageScore: 10,
};
// 赋值给标注了类型的变量
const gameData: GameData = rawGameData;

内容的提问来源于stack exchange,提问作者thathurtabit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:15:02