对象类型、可选属性/只读属性、索引签名
定义带属性的对象类型,将部分属性标记为可选或只读,并使用索引签名支持灵活的键。
对象类型、可选属性/只读属性、索引签名 是 CoddyKit 上的免费 TypeScript Academy 课时。 这是第 1 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 TypeScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 TypeScript Academy 课程共包含 3 节课。
简介
目标:在 TypeScript 中定义结构化对象。您将了解对象类型、可选属性、只读修饰符,以及用于动态键的索引签名。
基本对象
对象类型定义属性名称及其类型。每个对象都必须符合声明的结构。
type User = {
id: number;
name: string;
};
const u: User = { id: 1, name: "Ada" };
console.log(u);可选属性
可选属性使用“?”。对象可以省略这些属性,TypeScript 会在使用前检查其是否为 undefined。
type User = {
id: number;
name: string;
email?: string; // optional
};
const a: User = { id: 1, name: "Ada" };
const b: User = { id: 2, name: "Lin", email: "l@example.com" };只读属性
readonly可确保属性在初始化后不能重新赋值。适用于常量和配置对象。
type Config = {
readonly version: number;
name: string;
};
const cfg: Config = { version: 1, name: "App" };
// cfg.version = 2; // Error, readonly索引签名
索引签名允许使用具有某种类型的未知属性名称。例如,键是字符串,值是数字。
type Dictionary = {
[key: string]: number;
};
const scores: Dictionary = { math: 95, eng: 88 };
console.log(scores["math"]);组合概念
您可以在同一个类型中组合readonly、可选属性和索引签名,从而构建灵活且安全的模型。
type Settings = {
readonly id: string;
theme?: "light" | "dark";
[extra: string]: string | number | undefined;
};
const s: Settings = { id: "abc", theme: "dark", fontSize: 14 };
console.log(s);可选属性检查
快速检查:“?”放在属性后面表示什么?
回顾
回顾:对象可以声明必需、可选、只读和索引签名属性。这些工具可以在灵活性与安全性之间取得平衡。
常见问题解答
「对象类型、可选属性/只读属性、索引签名」课时是免费的吗?
是的 — 「对象类型、可选属性/只读属性、索引签名」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 3 节课。
「对象类型、可选属性/只读属性、索引签名」这节课中我会学到什么?
定义带属性的对象类型,将部分属性标记为可选或只读,并使用索引签名支持灵活的键。 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 TypeScript Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 TypeScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 3 节。
「对象类型、可选属性/只读属性、索引签名」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 TypeScript Academy 课中编写并运行代码吗?
能。每节 TypeScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 对象类型、可选属性/只读属性、索引签名
- 接口与类型别名
- 结构化类型与多余属性检查