如何在 TypeScript 中将字符串转换为 enum?
大家好!我刚开始学习 TypeScript,在使用枚举(enum)时遇到了问题。我有一个描述订单状态的 enum:
```typescript
enum OrderStatus {
Pending = 'pending',
Processing = 'processing',
Shipped = 'shipped',
Delivered = 'delivered',
Cancelled = 'cancelled'
}
```
我从 API(例如服务器的 JSON 响应)中获取一个字符串,其中包含状态值,比如 `'shipped'`。我需要将这个字符串转换回 `OrderStatus` 类型,以便在 switch-case 中使用它,或者传递给期望该 enum 的函数。
问题在于简单的赋值不起作用:
```typescript
const statusFromApi: string = 'shipped';
const orderStatus: OrderStatus = statusFromApi; // 错误:类型 'string' 不能赋值给类型 'OrderStatus'
```
我尝试过使用类型断言(`as OrderStatus`),但这似乎不安全——如果传入一个不在 enum 中的字符串,不会报错,但行为会...