TypeScript中interface和type的区别及何时使用
大家好!我刚开始学习TypeScript,遇到了两种描述对象结构的方式:`interface`和`type`。起初我以为它们是一样的,但后来发现它们在某些情况下表现不同。
举个例子。我可以通过`interface`这样写:
```typescript
interface User {
name: string;
age: number;
}
```
或者通过`type`这样写:
```typescript
type User = {
name: string;
age: number;
};
```
当我创建对象时,两种方式效果相同:
```typescript
const user: User = { name: 'Alex', age: 30 };
```
但后来我尝试合并两个类型。使用`interface`时,我可以直接写第二个同名接口,它们会自动合并:
```typescript
interface User {
email: string;
}
// 现在User拥有name、age和email
```
而使用`type`时,我得到了错误:"Duplicate identifier 'User'"。于是我了解了`&`(intersection)用于类型,但这是另一种语法。
另外我听说`type`可以做