正确设置传递给Ramda的匿名函数的TypeScript类型

时间:2017-10-06 22:07:54

标签: typescript typescript-typings ramda.js

我正在试图弄清楚Ramda食谱方法mapKeys的正确类型是什么,如果不抛出错误就不会出现这种情况。

问题

错误发生在fn

  

“{}”类型的参数不能分配给类型'的参数(a:   string)=>串'。类型“{}”不提供签名'(a:   string):string'。

我可以从R.adjust的类型中看到它使用泛型,我根据错误尝试了(a: string) => string,错误应该是正确的类型,以及其他一些变体,例如{{1} }}

有人可以指出匿名函数的(a: string) => string[]参数应该是什么来修复输入错误?

通过使用VSCode将示例粘贴到TypeScript项目并通过npm安装Ramda,这非常容易复制,并且我将fn的输入作为参考。

示例

R.adjust

Ramda打字参考

import * as R from 'ramda';

export const mapKeys = R.curry(
  (fn: ???, obj: { [k: string]: any } | { [k: number]: any }) =>
    R.fromPairs(
      R.map(
        R.adjust(fn, 0), // <--- Error: tried typings for `adjust`
        R.toPairs(obj)
      )
    )
);

1 个答案:

答案 0 :(得分:2)

我在types/npm-ramda上为public class Test { public static void main(String args[]) { long e = 0; for (int i = 1; i <= 100000; i++) { e += 1.0 / factorial(i); } System.out.println(e); } public static long factorial(long number) { if (number <= 1) return 1; else return number * factorial(number - 1); } } 发布了一个问题,并且Github已合并为母版,用于下一版Ramda打字版。