typescript - 为什么这个 TypeScript 代码无法进行类型检查?
问题描述
let a: { b: number }
let b: { b: number, c: number } = { b: 1, c: 2 }
a = { b: 1, c: 2 } // Error: Object literal may only specify known properties
a = b // OK
解决方案
Typescript 支持结构类型。在检查对象类型 B 是否是对象类型 A 的子类型时,B 的多余属性无关紧要。为了捕获更多错误,Typescript 有一个特殊情况,它知道类型 B 来自对象字面量。这些被称为新鲜对象文字,并在此处进行了描述。理由是多余的财产通常是一个错字。但是当类型 B 可以来自任何对象,而不仅仅是对象字面量时,通常的结构类型规则适用,因此没有警告。
推荐阅读
- javascript - 如何评估第一个快照
- r - 有没有办法用`future.apply::future_apply`手动附加包和全局变量
- java - 出于安全原因升级 Java 运行时,无需使用较新的 Java 版本重新编译应用程序
- c# - 在 css 选择器中带有 Selenium 变量的 Visual Basic C#
- sql-server - 多实例的实体框架迁移策略
- java - 干燥控制器 - 返回实体或重定向的方法(在 Java、Spring 中)
- c# - 允许选择中的自由文本
- python - 高级冰雹 - 嵌套循环/组合
- python - 如何将模型从 H2O Web UI Flow 加载到 python?
- c - macOS 上的 C 程序无法打开其输入文件