Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 如何转换其中一个<;错误,任务<;任何>&燃气轮机;或者<;错误,任何>;在fp ts中_Typescript_Functional Programming_Fp Ts - Fatal编程技术网

Typescript 如何转换其中一个<;错误,任务<;任何>&燃气轮机;或者<;错误,任何>;在fp ts中

Typescript 如何转换其中一个<;错误,任务<;任何>&燃气轮机;或者<;错误,任何>;在fp ts中,typescript,functional-programming,fp-ts,Typescript,Functional Programming,Fp Ts,我有一个返回或的管道,但我需要的是任务或 如何将或转换为任务或 是否有任何实用程序函数用于执行此操作?您可以创建以下转换: import { Either } from "fp-ts/lib/Either"; import { Task } from "fp-ts/lib/Task"; import { fromEither, rightTask, chain } from "fp-ts/lib/TaskEither"; import { pipe } from "fp-ts/lib/pipea

我有一个返回
的管道,但我需要的是
任务或

如何将
转换为
任务或


是否有任何实用程序函数用于执行此操作?

您可以创建以下转换:

import { Either } from "fp-ts/lib/Either";
import { Task } from "fp-ts/lib/Task";
import { fromEither, rightTask, chain } from "fp-ts/lib/TaskEither";
import { pipe } from "fp-ts/lib/pipeable";

type MyType = { a: string }; // concrete type instead of any for illustration here

declare const t: Either<Error, Task<MyType>>; // your Either flying around somewhere

const result = pipe(
  fromEither(t), // returns TaskEither<Error, Task<MyType>>
  chain(a => rightTask(a)) // rightTask returns TaskEither<Error, MyType>, chain flattens
); 

// result: TaskEither<Error, MyType>
从“fp ts/lib/earth”导入{earth};
从“fp ts/lib/Task”导入{Task};
从“fp-ts/lib/taskorth”导入{fromther,rightTask,chain};
从“fp ts/lib/pipeable”导入{pipe};
类型MyType={a:string};//具体类型,而不是此处的任何示例
声明常量t:other;//你要么在某处飞来飞去
常数结果=管道(
fromOrit(t),//返回taskOrit
链(a=>rightTask(a))//rightTask返回Task或者,链变平
); 
//结果:两者都是
PS:我本想只写
chain(rightstask)
,但是
错误
类型不能用这种速记法正确推断(请注意目前完全确定的原因)

尽管如此,这是一个廉价的价格为这些强大的类型,并提供您想要的结果

解决方案如下:

声明常量a:E.其中之一;
常数b:TE.taskorn=E.任择序列(T.task)(a);
declare const a: E.Either<Error, T.Task<unknown>>;

const b: TE.TaskEither<Error, unknown> = E.either.sequence(T.task)(a);