object type 对象类型

最后更新:2026-10-22

object type 对象类型

对象类型用"属性名: 类型"的结构描述对象:一次性使用可内联,需要复用就交给 interface 或 type。TS 靠"形状匹配"判断兼容。

分组类型组合
类型类型
严格模式不需要

ℹ️ 说明 编辑器将 TypeScript 转译为 JavaScript 后运行(不做类型检查);类型检查结果见示例 Output。

📝 语法

const user: { id: number; name: string; tags?: string[] } = {
  id: 1,
  name: "Ada",
};

⚙️ 参数

{ name: string }分号或逗号分隔的属性声明,值类型可为任意类型(含嵌套对象)
?/readonly可选与只读修饰符同样适用于内联对象类型

返回值:无返回值——对象类型是纯类型层概念,不产生任何运行时代码。

▶ 示例

修改下面的代码,点击试一试查看转译运行结果:

输出:

5 no label

(转译后运行输出;给 point 写一个类型里不存在的 z 字段会触发多余属性检查报错)

💡 要点

ℹ️ 说明 TS 是结构化类型系统:只要形状匹配就兼容,不要求显式继承某个类或接口("鸭子类型")。
💡 提示 结构被两处以上引用时抽成 interface/type:报错信息更短、修改只改一处。
⚠️ 注意 对象字面量赋值会触发"多余属性检查":写了类型里没有的字段直接报错;先赋给变量再传入则绕过检查。
更多案例即将上线。

📚 相关教程

❓ 常见问题

Q 什么是结构化类型(鸭子类型)?
A 类型兼容性只看"有没有需要的属性和类型",不看声明来自哪里。{x: 1, y: 2, z: 3} 可以赋给 {x: number; y: number},多的 z 不妨碍。
Q 内联对象类型和 interface 该用哪个?
A 只用一次且很简单就内联;要复用、扩展或希望 IDE 有名字提示就用 interface/type。
Q 函数参数是对象怎么标注?
A 直接在参数位置写结构:function draw(p: { x: number; y: number }) {}。结构复杂就先定义 interface 再引用。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏