切换导航
新动弹计划
搜索
文章
动弹
排行榜
登录
注册
×
搜索
文章
动弹
热门关键词
重读《掌控习惯》
ChatGPT
Docker
Laravel
读书
跑步
#daily tips#
#稍后阅读#
Falcon
2024-04-07 10:22
冒泡
这个例子举得好sb,使用不同的操作符得到相同的结果,只会让人更迷惑,而且这种举例也没有什么现实意义。
不如chatgpt的举例:
如果在第二个案例中的 `&` 改成用 `|`,那么 `UserEmployee` 就会变成一个联合类型,代表一个对象可以是 `User` 类型或者 `Employee` 类型:
```typescript
type User = { name: string; age: number };
type Employee = { companyId: string };
type UserEmployee = User | Employee;
```
这意味着 `UserEmployee` 类型的变量可以是包含 `name` 和 `age` 属性的 `User` 对象,或者是仅包含 `companyId` 属性的 `Employee` 对象。联合类型中的每个成员类型可以独立存在。
所以,如果你有一个 `UserEmployee` 类型的变量,它可以是这样:
```typescript
let userEmployee: UserEmployee = { name: "Alice", age: 30 }; // Valid User
```
或者这样:
```typescript
userEmployee = { companyId: "12345" }; // Valid Employee
```
但是它不能是同时包含 `User` 和 `Employee` 所有属性的对象,这就是与交叉类型的主要区别。
如果对这方面或其他编程知识有任何疑问,可以继续咨询。
-----
其实ChatGPT这种说法也是错的,它也可以是同时包含 `User` 和 `Employee` 所有属性的对象。比如:
```typescript
let userEmployee2: UserEmployee = { name: "Alice", age: 30,companyId: "12345" }; // Valid User
```
演示:
https://www.typescriptlang.org/zh/play?#code/C4TwDgpgBAqgzhATlAvFA3lAdgQwLYQBcUcwiAllgOYDcUOVR2ArngEZJQC+NAUKJCgBRPGAA2AexARoaTAGMJonFhABJACbFSFatz4Do8JCPFSZqWAmQAfYaMnSIfXmIjAoza6cczixxB9zWQxsfCYAIgBBMXJ5CAiAGnpGYgBmAAZ9KAB6HKgANRxYjSskV3dPbwdggCZ-arMnSwUlMBV1LSgIgEZatIAWAFYI7LzC4vJSoKdeRSxSKpMapzSG5aaLOSgwgmJo2PiklKZM5MVlVU19vsGRsfyikvtNiF4Kjy8kKMREHEQQMQfn8QAAeAIzGQAPlQAG0voEVjJEgjIRBaijGr4IGkALpzCQLCRuAB0kioAAoEcD-iBEoYJAAzJaI15pACUQA
0
暂无评论