TypeScript:interface和type有什么区别?何时使用哪个?
大家好!我开始学习TypeScript,对`interface`和`type`之间的区别感到困惑。似乎两者都可以描述对象的结构,但我不明白何时使用哪个工具。
看看我的代码。我试图描述一个用户及其地址:
```typescript
// 使用interface的版本
interface IUser {
name: string;
age: number;
address: IAddress;
}
interface IAddress {
city: string;
street: string;
}
// 使用type的版本
type TUser = {
name: string;
age: number;
address: TAddress;
}
type TAddress = {
city: string;
street: string;
}
```
两个版本都有效,但我听说有一些根本性的区别。例如,我看到`type`可以对联合类型做某些操作,而`interface`不能。还有一些项目中全部使用`interface`,而另一些则使用`type`。
请告诉我,真正的区别是什么?有什么好的实践规则?也许有些情况下只能使用其中一个?