小编ilu*_*vAS的帖子

在打字稿中对 API 响应进行类型检查

我很好奇当您期望某种类型作为来自 fetch / Axios / 等的响应并且其响应是不同类型时会发生什么。我可以检测到这种不匹配吗?

interface HttpResponse<T> extends Response {
  parsedBody?: T;
}
export async function http<T>( request: RequestInfo ): Promise<HttpResponse<T>> {
  const response: HttpResponse<T> = await fetch( request );
  response.parsedBody = await response.json();
  return response;
}

// example consuming code
const response = await http<number>(
  "https://thisURLdoesNotReturnANumber"
);
Run Code Online (Sandbox Code Playgroud)

代码会抛出错误吗?会悄无声息的过去吗?我如何检测不匹配?

javascript async-await typescript

8
推荐指数
1
解决办法
8814
查看次数

Haskell中的同构`fmap`

Haskell的Prelude中是否存在这样的事情?

wfmap :: Functor f
      => a
      -> (a -> b)
      -> (b -> a)
      -> (b -> f b)
      -> f a
wfmap x u w g = fmap (w) (g (u x))
Run Code Online (Sandbox Code Playgroud)

在我正在进行的一个项目中,我经常发现自己"转换"了一种类型,处理它并"转换"它.

haskell functor

6
推荐指数
1
解决办法
138
查看次数

在Haskell中将仿函数映射到另一个仿函数

我有一个生成Maybe a类型的函数,我在函数中使用它来生成一个Either b a.有没有一种方法,我可以映射NothingLeft x简化我的代码?以下代码给出了一些上下文:

rmX :: ... -> Maybe a
cvX :: ... -> Either CVXError a
data CVXError = BadIndex | NoCover | NoSpace
cvX ... =
  ...
  case rmx 1 xs of
    Nothing -> Left NoSpace
    Just p  -> Right (x2:x1:(fromJust (rmX (-1) p)))
-- given that rmX always passes on negative value arg
Run Code Online (Sandbox Code Playgroud)

case语句只是乞求被替换fmap,但问题是,我不知道如何"地图" Nothing,以Left NoSpacefmap通话或甚至提取这种模式让我自己UTIL功能.

haskell functor

2
推荐指数
1
解决办法
111
查看次数

标签 统计

functor ×2

haskell ×2

async-await ×1

javascript ×1

typescript ×1