使用拉姆达咖喱+;带有TypeScript的占位符结果为;类型';占位符';不可分配给类型';x';

使用拉姆达咖喱+;带有TypeScript的占位符结果为;类型';占位符';不可分配给类型';x';,typescript,ramda.js,currying,parameterbinding,Typescript,Ramda.js,Currying,Parameterbinding,我想将已知参数绑定到一个带有Ramda的回调,其余参数未指定: import * as R from "ramda"; type Params = Partial<{ param1: number; param2: number; param3: number; }>; function getBoundCallback(params: Params) { const { param1, param2, param3 } = params;

我想将已知参数绑定到一个带有Ramda的回调,其余参数未指定:

import * as R from "ramda";

type Params = Partial<{
  param1: number;
  param2: number;
  param3: number;
}>;

function getBoundCallback(params: Params) {
  const { param1, param2, param3 } = params;

  const callback = (p1: number, p2: number, p3: number) => {
    // do something
  };

  return R.curry(callback)(
    param1 || R.__, 
    param2 || R.__, 
    param3 || R.__
  );
}
正确的方法是什么

我能想到的唯一解决办法是:

const callback = (
    _p1: number | R.Placeholder,
    _p2: number | R.Placeholder,
    _p3: number | R.Placeholder
  ) => {
    const p1 = _p1 as number;
    const p2 = _p2 as number;
    const p3 = _p3 as number;

    // do something
  };
这远远不是最优的

正确的方法是什么

我使用
“types/npm-ramda#dist”
进行ramda类型声明

const callback = (
    _p1: number | R.Placeholder,
    _p2: number | R.Placeholder,
    _p3: number | R.Placeholder
  ) => {
    const p1 = _p1 as number;
    const p2 = _p2 as number;
    const p3 = _p3 as number;

    // do something
  };