在TypeScript中,对象类型是描述数据结构的核心工具。通过对象类型,我们可以定义具有特定属性和行为的对象,使代码更加健壮和易维护。本文主要探讨TypeScript中的对象类型、属性修饰符、索引签名、扩展类型等内容。
📝 关键内容
- 对象类型
- 匿名对象类型
- 接口与类型别名
- 属性修饰符
- 可选属性
- 只读属性
- 索引签名
- 多余属性检查
- 扩展类型
- 接口继承
- 交叉类型
🤌 对象类型
对象类型有三种方式声明,分别是通过匿名声明、接口、类型别名声明。
- 匿名对象类型
- 接口:
- 类型别名:
😋 属性修饰符
对象类型中的每个属性可以指定类型,并且表明其是否可选以及是否只读。
- 可选属性:类比kotlin中的可选参数
- 只读属性:readonly
- 标记为只读的属性在类型检查时不能被写入。
👏 索引签名-Index Signatures
- 有时我们无法提前知道类型的所有属性名,但知道值的类型。可以使用索引签名:
😇 多余属性检查
在TypeScript中,多余属性检查是一个强大的特性,它在将对象字面量分配给类型时提供额外的类型安全检查。这个特性能确保在为函数或变量提供一个对象字面量时,对象只能包含目标类型预期的属性。
示例说明
- 假设我们有一个接口
SquareConfig,用来定义一个正方形的配置,它可能包含颜色和宽度:
- 我们定义一个函数
createSquare,它接受一个SquareConfig类型的对象,并返回一个包含颜色和面积的对象:
- 如果我们尝试使用以下代码调用
createSquare函数,TypeScript编译器会提示错误,因为colour属性在SquareConfig类型中不存在:
如何解决多余属性检查的错误
- 使用类型断言:以通过类型断言告诉TypeScript,你知道你在做什么,即使对象字面量中包含了目标类型中不存在的属性:
- 添加字符串索引签名:如果你预计一个对象可能有额外的属性并且你不想TypeScript报错,你可以在接口中添加一个字符串索引签名:
- 将对象分配给另一个变量:TypeScript不会对非直接赋值给类型的对象进行多余属性检查。如果你将对象先分配给一个变量再传递,TypeScript就不会报错:
🤔 扩展类型
接口继承-extends
- 单继承:
- 多继承:
交叉类型
- 交叉类型,可以用于组合现有对象类型:
🤗 总结归纳
TypeScript中的对象类型提供了强大的工具来描述和操作数据结构。通过属性修饰符、索引签名、扩展类型等,我们可以创建灵活且安全的代码。
📎 参考文章
本篇文章,主要内容是借助GPT的文本写作能力,以及对官方关于对象类型内容的整理而来的。
- Author:CoderWdd
- URL:https://www.wuinsights.top//article/01HXRQH1CGGPR531TQSWQGNSZR
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts