使用ts的泛型做status转义
时间: 2023-06-15 16:03:46 浏览: 115
假设有一个状态码转义的需求,可以使用 TypeScript 的泛型来实现:
```typescript
type StatusMap = {
200: 'OK',
404: 'Not Found',
500: 'Internal Server Error'
}
type Status<T extends keyof StatusMap> = T
function getStatusName<T extends keyof StatusMap>(status: Status<T>): StatusMap[T] {
return status as StatusMap[T]
}
// 使用示例
const status: Status<200> = 200
const statusName = getStatusName(status) // 'OK'
```
以上代码中,我们定义了一个 `StatusMap` 类型,它是一个以状态码为键,以状态名称为值的映射。然后我们定义了一个 `Status` 类型,它接受一个 `T` 泛型参数,表示状态码。`getStatusName` 函数接受一个 `Status<T>` 类型的参数,返回对应的状态名称。使用时,我们可以通过指定泛型参数来传入具体的状态码,例如 `const status: Status<200> = 200`,并调用 `getStatusName` 函数来获取状态名称。
阅读全文