前端知库

结构类型、可选属性和额外属性检查有哪些区别?

参考答案

TypeScript 主要按结构判断类型兼容,即对象具备所需成员时可赋给相应类型。对象字面量在直接赋值或传参时还有额外属性检查,帮助发现拼写错误;经过变量中转后检查方式可能不同。

这不意味着可以依赖中转变量绕过正确性约束。类型没有声明的运行时字段仍可能存在,接口也不是自动过滤器。可选属性表示该键可以不存在,其与显式写入 undefined 的关系受 exactOptionalPropertyTypes 配置影响。

对 ID 等结构相同但语义不同的值,可采用品牌类型降低混用风险;对外部数据仍应实际验证。理解编译器选项,比只背诵“鸭子类型”更有助于排查赋值错误。