我有一个检查请求数据以访问API端点的函数。对于每个端点,可能会有不同的预加载数据。
问题是,对于每个操作,我需要将请求数据转换为端点数据类型。是否有一种方法可以仅在 case 块作用域内进行一次断言?或者我应该采取一些不同的方法。
游乐场。
type Req<T = unknown> = { endpoint: string, data: T}
type End1 = string
type End2_3 = number
const checkRole = (req: unknown): boolean => {
switch ((req as Req).endpoint) {
case 'endpont1': {
if((req as Req<End1>).data = 'hi') return true
}
case 'endpont2':
case 'endpont3': {
(req as Req<End2_3>).data += 1;
(req as Req<End2_3>).data *= 1;
(req as Req<End2_3>).data -= 1;
if((req as Req<End2_3>).data = 5) return true
}
default: return false
}
}
更新。
req as Req<End1>
不是类型转换。它被称为 类型断言,其目的是告诉编译器: “我知道我在做什么,请停止用不匹配类型的错误困扰我”。 - axiac