最新回答 / 瑜伽兔子
联合类型(`A | B`)和交叉类型(`A & B`)看似增加了类型复杂度,但在很多场景下,它们能**精准描述数据的“或”“且”关系**,反而会让类型逻辑更清晰、代码更安全。避开它们可能导致用 `any` 替代或重复定义类型,反而增加维护成本。下面结合具体场景举例说明:
### 一、联合类型(`A | B`):处理“或”关系的场景
联合类型的核心是“类型可以是多个选项中的一个”,适合描述**存在多种可能形态的数据或状态**。
#### 1. 状态管理:同一变量的不同状态(“成功/失败/加载...
2024-02-08
讲师回答 / 黑石
这是两种安全策略的问题,分为类型匹配和属性访问限制。类型匹配:在你的代码中,变量 c2 被定义为 Course2 类型,这是 EnglishCourse | MathCourse 的联合类型。变量 c2 的结构 { name: 'a', desc: 'abc' } 符合 EnglishCourse 接口的定义(因为 EnglishCourse 有 name 和 desc 两个属性),所以 TypeScript 认为这是一个有效的赋值。 接下来,关于为什么你不能直接访问 c2.desc:属性访...
2024-01-03