提问人:user1790300 提问时间:11/18/2023 最后编辑:user1790300 更新时间:11/18/2023 访问量:16
FP-TS Typescript 错误:类型“Left”不可分配给类型“None”
FP-TS Typescript error: Type '"Left"' is not assignable to type '"None"'
问:
我是 fp-ts 的新手,正在尝试使用 typescript、express 和 fp-ts 编写一个 jwt 策略函数。运行 npx tsc -p tsconfig.json 后,我现在收到一条错误消息,我无法确定问题可能是什么。当然,在处理 done 函数和 done 返回 void 时,我试图从 jwt 策略中返回 None,不确定这是否是最好的方法。
智威汤逊策略功能:
createJwtStrategy: (req: express.Request, jwt_payload: any, done: VerifiedCallback) => tryCatch<ErrorBase, None>(
pipe(
jwt_payload?.userId as string,
interactor.evaluateJwtStrategy,
chain((user: Option<LoggedInUser>) => {
if (user._tag === "None") {
return right((done(null, false) as unknown) as None);
}
req.user = {
userId: user.value.userId,
firstName: user.value.firstName,
lastName: user.value.lastName,
emailAddress: user.value.emailAddress,
profilePicUrl: user.value.profilePicUrl
};
return right((done(null, req.user) as unknown) as None);
})
),
(reason: any) => {
return left((done(reason) as unknown) as None);
}
)
错误信息:
error TS2345: Argument of type 'TaskEither<ErrorBase, None>' is not assignable to parameter of type 'LazyArg<Promise<None>>'.
Type 'Promise<Either<ErrorBase, None>>' is not assignable to type 'Promise<None>'.
Type 'Either<ErrorBase, None>' is not assignable to type 'None'.
Type 'Left<ErrorBase>' is not assignable to type 'None'.
Types of property '_tag' are incompatible.
Type '"Left"' is not assignable to type '"None"'.
113 pipe(
~~~~~
114 jwt_payload?.userId as string,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
131 })
~~~~~~~~~~~~~~
132 ),
- 错误消息指向的问题是什么,似乎很神秘,诚然我是 fp-ts 的菜鸟?
- 当“无”是_tag的有效类型时,为什么错误消息指示“属性'_tag'的类型不兼容”?
- 如果这是处理需要处理 void 的函数的错误方法,那么在这种情况下,更好的方法是什么?
- 在 tryCatch 中使用管道被认为是不好的做法吗?我无法找到使用这种方法的任何场景,但它似乎非常适合这种情况?
更新:我设法通过在tryCatch中删除管道来解决问题,并在管道中添加了一个双映射,这似乎解决了这个问题。将更新修复程序。
答: 暂无答案
评论