Avatar ·

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`可以做