Avatar ·

TypeScript中的Record是什么以及如何正确使用它?

大家好!我最近开始学习TypeScript,遇到了内置类型`Record`。我读了文档,但没有完全理解它的本质以及何时使用它。 我知道有接口和类型,但`Record`看起来有些不同。例如,我看到过这样的代码: ```typescript const users: Record = {}; ``` 但我不明白这与简单的对象`{ [key: string]: User }`有什么区别。或者与`Map`相比呢?什么时候该选择哪个? 我的具体问题是:我有一个订单状态列表(pending, approved, rejected),并且需要为每个状态存储一些文本(例如,用于显示的颜色)。我这样写: ```typescript const statusColors = { pending: 'yellow', approved: 'green', rejected: 'red' }; ``` 但是当我尝试访问`statusColors['unknown']`时,TypeScript会报错。如何用`Record`正确地为这个映射添加类型?总的来说,对于哪些场景`Record`最适用?我将不胜感激。