- 介绍
- TypeScript 简介
- TypeScript 入门
- 探索类型系统
- 原始类型
- 类型注释
- 可选属性
- 只读属性
- 索引签名
- 扩展类型
- 字面量类型
- 字面量推断
- 严格空检查
- 枚举
- 缩小范围
- 赋值
- 控制流分析
- 类型谓词
- 可区分联合
- never 类型
- 详尽性检查
- 对象类型
- 元组类型(匿名)
- 命名元组类型(已标记)
- 固定长度元组
- 联合类型
- 交集类型
- 类型索引
- 值的类型
- Func 返回值的类型
- 模块的类型
- 映射类型
- 映射类型修饰符
- 条件类型
- 分配条件类型
- infer 条件类型中的类型推断
- 预定义条件类型
- 模板联合类型
- 任意类型
- 未知类型
- 空类型
- Never 类型
- 接口及类型
- 内置原始数据类型
- 常见的内置 JS 对象
- 重载
- 合并与扩展
- 类型和接口之间的差异
- Class
- 泛型
- 擦除的结构类型
- 命名空间
- Symbols
- 三斜杠指令
- 类型操作
- 其他
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
类型和接口之间的差异
声明合并(增强):
接口支持声明合并,这意味着您可以定义多个具有相同名称的接口,TypeScript 会将它们合并为具有组合属性和方法的单个接口。 另一方面,类型不支持声明合并。 当您想要添加额外的功能或自定义现有类型而不修改原始定义或修补丢失或不正确的类型时,这可能会很有帮助。
interface A { x: string; } interface A { y: string; } const j: A = { x: 'xx', y: 'yy', };
扩展其他类型/接口:
类型和接口都可以扩展其他类型/接口,但语法不同。 对于接口,您可以使用“extends”关键字从其他接口继承属性和方法。 但是,接口无法扩展像联合类型这样的复杂类型。
interface A { x: string; y: number; } interface B extends A { z: string; } const car: B = { x: 'x', y: 123, z: 'z', };
对于类型,您可以使用 & 运算符将多个类型合并为单个类型(交集)。
interface A { x: string; y: number; } type B = A & { j: string; }; const c: B = { x: 'x', y: 123, j: 'j', };
并集和交集类型:
在定义并集和交集类型时,类型更加灵活。 通过“type”关键字,您可以使用“|”运算符轻松创建联合类型,并使用“&”运算符创建交集类型。 虽然接口也可以间接表示联合类型,但它们没有对交集类型的内置支持。
type Department = 'dep-x' | 'dep-y'; // 并集 type Person = { name: string; age: number; }; type Employee = { id: number; department: Department; }; type EmployeeInfo = Person & Employee; // 交集
接口示例:
interface A { x: 'x'; } interface B { y: 'y'; } type C = A | B; // 接口的并集
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论