Ramda 的 LensProp 类型定义

LensProp Type Definition of Ramda

当使用 Ramda 的 lensProp 像:

R.lensProp('x')

我收到这个错误:

Argument of type 'string' is not assignable to parameter of type 'never'.ts(2345)

看起来你需要传入你希望 lensProp 操作的类型,这样它就知道在使用时 return 是什么类型。您可以通过传递通用参数来做到这一点。

这是经过修改的 example from the docs,可以很好地与 typescript 搭配使用:

import R from 'ramda'

interface Point {
    x: number
    y: number
}

const xLens = R.lensProp<Point>('x');

R.view(xLens, {x: 1, y: 2});            //=> 1
R.set(xLens, 4, {x: 1, y: 2});          //=> {x: 4, y: 2}
R.over(xLens, R.negate, {x: 1, y: 2});  //=> {x: -1, y: 2}

Playground