【问题标题】:TypeScript Generic Types problem: Workaround requiredTypeScript Generic Types 问题:需要解决方法
【发布时间】:2021-01-03 23:15:26
【问题描述】:

我被卡住了,我不知道当前是什么⸘workaround‽...

此问题在本期中描述:Microsoft/TypeScript/#1213...

我正在尝试实现Chain specification:

(我需要将一个类型传递给ApType,以便在第 12 行(在下面的 sn-p 中)Apply 不是硬编码,而是通用的也可以扩展类型来自任何IApply)

m['fantasy-land/chain'](f)

实现 Chain 规范的值也必须实现 Apply 规范。

a['fantasy-land/ap'](b)

我做了一个FunctorSimplex,然后由FunctorComplex 扩展,然后由Apply 扩展,但现在我想将Apply 扩展为Chain,它正在打破......

所以我需要它(下图和代码链接):

Permalink to the code snippet lines 11 to 22 in 7ff8b9c

export type ApType<A = unknown> = <B = unknown>(
  ap: Apply<(val: A) => B>,
) => IApply<B>;

/* [...] */

export interface IApply<A = unknown> extends FunctorComplex<A> {
  /** `Fantasy-land/ap :: Apply f => f a ~> f (a -> b) -> f b` */
  ap: ApType<A>;
}

【问题讨论】:

  • 与解决方案完全无关,但这可能是我在文本编辑器中见过的最炫的颜色和字体组合。

标签: typescript generics inheritance functional-programming apply


【解决方案1】:

我认为您正在寻找的是更高种类的类型(HKT)。在 Typescript 中,可以使用称为 module augmentation 的东西来实现 HKT。查看this 文章。你也可以参考fp-ts 的实现。

【讨论】:

    猜你喜欢
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    相关资源
    最近更新 更多