0
我试图弄清楚什么是适当的类型为Ramda食谱方法mapKeys
它不会发生错误没有transpile。正确设置传递给Ramda的匿名函数的TypeScript类型
问题
错误是fn
:类型的
参数 '{}' 不是分配给类型的参数 '(一个: 字符串)=>字符串'。类型“{}”不提供符合签名'(a: 字符串):string'。
我可以从R.adjust
的分型看,它使用泛型,我试图(a: string) => string
基于错误,这应该是正确的分型,和其他一些变化,如(a: string) => string[]
。
有人可以指出什么fn
参数为匿名函数应该是解决typings错误?
通过将示例粘贴到使用VSCode的TypeScript项目中,并通过npm安装Ramda,这非常容易复制,并且我将R.adjust
的类型作为参考。
例
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)
)
)
);
Ramda分型为参考
adjust<T>(fn: (a: T) => T, index: number, list: T[]): T[];
adjust<T>(fn: (a: T) => T, index: number): (list: T[]) => T[];
我不知道打字稿。但是该函数应该有一个接受单个字符串并返回一个字符串的类型。 –
我想它理论上可以有相同的'String ||数字'类型为'toPairs',尤其是在回报中,但这可能是矫枉过正的。 (谁会用这种方式?) –
@ScottSauyet啊我认为同样的,当我看到错误,但我已经尝试了错误消息中提供的'(a:string)=> string'和'string' 。我认为这可能是'调整'类型的问题,也许...因为使用'调整'的拉姆达食谱'renameBy'的另一个方法也有同样的问题 – mtpultz